Profissгo De Caminhoneiro 2.1!! -
WoozieBRz - 10.06.2017
Realizando melhorias no cуdigo sera feito um novo FS melhorado em breve
Re: Profissгo De Caminhoneiro 2.0!! -
WoozieBRz - 10.06.2017
nice assinatura que polui removida-
Respuesta: Profissгo De Caminhoneiro 2.0!! -
NobiZinhoBR - 10.06.2017
Parabйn! Absorveu as ideias de melhoramento da primeira versгo e aplicou na segunda, continue assim e sempre melhorando. Em relaзгo ao tуpico era sу atualizar o antigo, fica a dica.
(continue evoluindo. crie um sistema de admins para novatos da prуxima
)
Re: Respuesta: Profissгo De Caminhoneiro 2.0!! -
WoozieBRz - 10.06.2017
Quote:
Originally Posted by NobiZinhoBR
Parabйn! Absorveu as ideias de melhoramento da primeira versгo e aplicou na segunda, continue assim e sempre melhorando. Em relaзгo ao tуpico era sу atualizar o antigo, fica a dica.
(continue evoluindo. crie um sistema de admins para novatos da prуxima )
|
sim mais o outro ja tava muito poluido e com tretas kkk agora irei atualizar pelo changelog as versхes ... , na proxima pretendo fazer sem comando /carregar tudo por checkpoint e um sistema de bonus no salario e tipo ao completar 10 entregas ele ganhava bonus =3 , esse sistema de admins vocк fala um novo comando para logar , comandos novo para se aplicar vocк diz ? vlw pela ideia vou fazer =3
Re: Profissгo De Caminhoneiro 2.0!! -
MultiKill - 10.06.2017
PHP код:
public OnPlayerConnect(playerid)
{
/* ... */
//SISTEMA DE SALARIO
SetTimerEx("ponto", 1799000, true, "i", playerid);
SetTimerEx("salario", 1800000, true, "i", playerid);
new str[128]; new NAME[128];
new prof;
GetPlayerName(playerid,NAME,128);
format(str, sizeof(str),"/caravana/%s.ini", NAME);
prof = DOF2_GetInt(str, "profissao");
profissao[playerid] = prof;
return 1;
}
Vocк esta setando dois timers para serem chamados mais de uma vez, toda vez que um jogador entrar dois timer sгo setados mas nгo sгo deletados na hora que o jogador sai do servidor. Use a funзгo
KillTimer e uma array 2d para armazenar o id dos timer e profissгo o jogador vocк pode usar um enumerador para organizar caso queira.
PHP код:
enum pinfo{
profissao,
timers[2]
}
new pData[MAX_PLAYERS][pinfo];
//exemplo:
pData[playerid][profissao] = 1;
pData[playerid][timers][0] = SetTimer
//Ou
#define PROFISSAO 0
#define TIMER1 1
#define TIMER2 2
new pData[MAX_PLAYERS][3];
pData[playerid][PROFISSAO] = 1;
Olhe os
limites do sa-mp, nгo й possнvel ter um nick com 127 caracteres no sa-mp, como o limite й 24 caracteres vocк esta jogando 104 cйlulas fora.
E a formataзгo para o local do arquivo com o nome do jogador nгo vai precisar mais do que 38 cйlulas, entгo nisso ai vocк esta jogando 194 cйlulas fora.
Qual a necessidade da variбvel prof? vocк esta apenas desperdiзando memoria.
PHP код:
profissao[playerid] = DOF2_GetInt(str, "profissao");
PHP код:
public OnPlayerDisconnect(playerid, reason)
{
new str[24]; new NAME[26];
GetPlayerName(playerid,NAME,26);
format(str, sizeof(str),"/caravana/%s.ini", NAME);
DOF2_CreateFile(str);
DOF2_SetInt(str, "profissao", profissao[playerid]);
DOF2_SaveFile();
return 1;
}
A array str nгo vai conseguir formatar o caminho completo para o arquivo jб que nгo tem cйlulas o suficiente para fazer a formataзгo mбxima, e a array NAME vai conseguir armazenar todo o nome do jogador mas esta usando duas cйlulas a mais do que o necessбrio (MAX_PLAYER_NAME й definido por 24 que й o limite do nome do jogador).
Outro problema й que toda vez que um jogador desconecta vocк tentar criar um arquivo mesmo que ele exista, ao jogador conectar verifique se o arquivo existe caso nгo exista crie o arquivo.
PHP код:
public OnPlayerSpawn(playerid)
{
if(profissao[playerid] != caminhoneiro) return profissao[playerid] = novato , SetPlayerColor(playerid, branco);
if(profissao[playerid] == caminhoneiro) return SetPlayerColor(playerid, cinza);
return 1;
}
Pra que duas verificaзхes?
Basta verificar se profissao й igual a definiзгo de caminhoneiro e fazer algo caso nгo seja fazer outra coisa.
PHP код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == carregamento)
{
switch(listitem)
{
case 0:
{
new rota1 = 1;
SetPlayerMapIcon(playerid, rota1, -1299.1785, 2707.7415, 50.0625, 24, 0, MAPICON_GLOBAL);
SetPlayerCheckpoint(playerid, -1299.1785, 2707.7415, 50.0625, 10.0);
SendClientMessage(playerid, -1, "{00FF00}Cargueiro carregado!!!");
SendClientMessage(playerid, -1, "{00FF00}Foi marcado em seu mapa o local de descarregamento.");
ROTAp[playerid] = 1;
}
}
}
return 1;
}
Qual a necessidade de usar a variбvel
rota1 e armazenar o valor 1 pra depois esse valor ser passado na funзгo SetPlayerMapIcon?
PHP код:
CMD:caminhoneiro(playerid, params[])
{
new jogador;
new ajog[25], pjog [25];
GetPlayerName(jogador, ajog, sizeof(ajog));
GetPlayerName(playerid, pjog, sizeof(pjog));
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}Vocк nгo й admin!");
if(sscanf(params, "d", jogador)) return SendClientMessage(playerid, -1, "{FF0000}Uso Correto: /caminhoneiro [id]");
if(!IsPlayerConnected(jogador)) return SendClientMessage(playerid, -1, "{FF0000} jogador nгo conectado.");
SendClientMessage(jogador, -1, "{00FF00}Algum admin te colocou na profissao de caminhoneiro.");
SendClientMessage(playerid, -1, "{FF0000}Vocк deu profissгo de caminhoneiro para o jogador.");
profissao[jogador] = caminhoneiro;
SetPlayerColor(jogador, cinza);
return 1;
}
Vocк criou duas arrays ajog e pjog e pegou o nome do jogador que digitou o comando e do id 0 (pois quando й declarada uma variбvel o seu valor inicial й 0 e nгo o lixo eletrфnico igual acontece em C/C++. Depois de pegar esses nome vocк nгo usou essas duas arrays.
Recomendo vocк declare a variбvel jogador declare ela depois da verificaзгo se o jogador esta logado na RCON.
PHP код:
CMD:cp(playerid, params[])
{
new string[128], Texto[200];
if(sscanf(params, "s[128]", string)) return SendClientMessage(playerid, -1, "{00FF00}Uso correto: /cp [Mensagem]");
if(profissao[playerid] != caminhoneiro) return SendClientMessage(playerid, -1, "{FF0000}Civis nгo tem chat prуprio");
new nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, nome, sizeof(nome));
format(Texto, 128, "{999999}I Chat-Profissгo I %s diz: %s", nome, string);
for(new i, Trucker = GetMaxPlayers(); i < Trucker; i++)
{
if(!IsPlayerConnected(i)) continue;
if(profissao[i] == caminhoneiro || profissao[playerid] == caminhoneiro)
{
SendClientMessage(i, -1, Texto);
}
}
return 1;
}
Nesse comando vocк seta o limite da mensagem para 128 cйlulas, mas isso nгo й possнvel pois o limite da entrada de textos no sa-mp й de 128, entгo seria 2 caracteres do comando mais a barra mais um espaзo para mensagem somando o uso de 4 caracteres e limitando a mensagem passada para 123 caracteres mais o EOS (End of String). E o limite da saнda й de 144 entгo vocк nгo vai conseguir mandar uma mensagem de 123 caracteres e vocк esta desperdiзando 35 cйlulas.
Recomendo vocк fazer a verificaзгo se profissao nгo й igual a caminhoneiro antes da verificaзгo do sscanf.
PHP код:
for(new i, Trucker = GetMaxPlayers(); i < Trucker; i++)
Recomendo utilizar a funзгo GetPlayerPoolSize pois ela retorna o id mais alto online.
PHP код:
for(new i, Trucker = GetPlayerPoolSize(); i <= Trucker; i++)
PHP код:
if(profissao[i] == caminhoneiro || profissao[playerid] == caminhoneiro)
Traduzindo esta condiзгo:
Код:
Se (profissao[i] for igual a caminhoneiro OU profissao[playerid] for igual a caminhoneiro)
Resumindo ele vai enviar a mensagem para todos os jogadores online, pois uma das duas condiзхes tem que ser verdadeiras e a segunda sempre vai ser.
PHP код:
CMD:profissao(playerid, params[])
{
if(profissao[playerid] == caminhoneiro)
{
#define DialogBoxEx 2000
new str[500];
format(str, sizeof(str), "{FF0000}quer falar com outros da profissгo? /cp\n{ff0000}quer cancelar a rota ? /cancelar\n{ff0000}se perdeu ? /local\n\n{66ff66}1- Engate um cargueiro no seu caminhгo\n{ffff00}2- De {ff0000}/carregar {ffff00}e siga o icone de caminhгo no mapa\n{66ffff}3- Se estiver la de {ff0000}/carregar {66ffff}novamente\n{ff9900}4- Escolha uma rota", playerid);
ShowPlayerDialog(playerid, DialogBoxEx, DIALOG_STYLE_MSGBOX, "Como Trabalhar", str, "Entendi", "");
}
if(profissao[playerid] == novato)
{
SendClientMessage(playerid, -1, "{FF0000}Vocк nгo trabalha pegue outra profissгo!");
}
return 1;
}
Qual a necessidade de definir DialogBoxEx dentro da callback do comando? Vocк usou uma array para formatar e declarou com 500 cйlulas mas a string tem no mбximo 337 caracteres e vocк nem formatou nada.
Nгo entendi qual й o motivo do uso da array pVez.
Antes de criar sistemas e postar no fуrum recomendo vocк aprender o bбsico da linguagem pawn.
Alguns tutoriais:
Operadores. Teуrico & Prбtico
Variбveis - Definiзгo, uso e tipos
Usando e Manipulando Arrays
Pawn Strings
Enumeradores (Em Inglкs)
Loops
Videos sobre blocos de instruзгo I (Й em C mas se aplica em pawn)
Videos sobre blocos de instruзгo II (Й em C mas se aplica em pawn)
Lista de vнdeo aulas
Lista de tutoriais
Re: Profissгo De Caminhoneiro 2.0!! -
WoozieBRz - 10.06.2017
nem vou mandar comentario em cima do seu para nгo poluir o tуpico a pVEZ? ela serve para mandar a mensagem de auxilio quando o player entrar no caminhгo somente 1 vez e nгo ficar repetindo seria muito chato a cada vez que o player conectar e entrar num caminhгo manda aquela mensagem e nгo toda vez que ele descer e subir entendeu ? agora vou ler o resto porque krl tu achou muita coisa '-'
Re: Profissгo De Caminhoneiro 2.0!! -
WoozieBRz - 10.06.2017
Todos os bugs apontados pelo multikill resolvidos versгo 2.1
Re: Profissгo De Caminhoneiro 2.0!! - KinG7 - 10.06.2017
Quote:
Originally Posted by WoozieBRz
nem vou mandar comentario em cima do seu para nгo poluir o tуpico
|
cara sйrio, para de frescura sobre essa coisa de " poluir o tуpico "
vocк mesmo polui, usando aquelas cores fortes, e comentando a cada coisa q tu fez
" ex: genti acabei de jogar gta v "
tem o botгo editar

~~~~~~~~
Код:
new pVEZ[MAX_PLAYERS], ROTAp[MAX_PLAYERS], profissao[MAX_PLAYERS] , local[MAX_PLAYERS] , matartempo[MAX_PLAYERS];
bom.. sobre isso й + prбtico vocк usar uma Enum ( enumerador )
pois como cк pode ver, estб usando muito " MAX_PLAYERS " pra cada vгriбvel
~~~~~~~~~
pensei q eu tava jogando CVR cara, ta bem parecido ..
mas a ideia foi boa, versгo 2.1 estб muito boa cara,
parabens!
Re: Profissгo De Caminhoneiro 2.0!! -
WoozieBRz - 10.06.2017
Quote:
Originally Posted by KinG7
pensei q eu tava jogando CVR cara, ta bem parecido ..
mas a ideia foi boa, versгo 2.1 estб muito boa cara,
parabens!
|
kkkkk te falar que usei la de exemplo o budega falou que nгo tinha problema o william nгo liga para coisas pequenas assim , qual seu nick e lvl la ?? , mais esse fs vai ser mais completo que o de la e vai ter rotas vips la nem pode escolher rota :v invйs de ser igual o deles o meu vai ter no comeзo do dialog rotas vips vocк clica se for da classe vip
vai aparecer outras rotas que ganham mais e vai ter bonus e muito mais coisa e.e
Re: Profissгo De Caminhoneiro 2.0!! -
IlanZ - 11.06.2017
Ta bem melhor que antes, nгo vou encher de coisa que da para fazer pois sei que й um iniciante e tem que ir aos poucos, sу achei meio estranho usar streamer, nгo й necessбrio nгo tem nem 100 objects

.