[Include] MULTI COLERED FUNCTIONAL CP [by Razor]
#1

Introduзгo:
Trago meu segundo realese pra vocкs, espero que gostem, na minha opiniгo ele й muito ъtil, e necessбrio, vai ajudar muito a todos os membros, tambйm nele mostra um gostinho, do grande poder da GAMBIARRA!

Features:
Quote:

+Varios CheckPoints estгo visнveis ao mesmo tempo para o player
+Vocк pode interagir com mais de um checkpoint ao mesmo tempo
+Pode mover o checkpoint, para onde o deseja
+Maior Perfomace e Precisгo que o CheckPoint Normal
+Estabilidade, e visibilade sem glitchs (ao contrario de DynCP)
+Sintaxes intuitivas e fбceis de utilizar

CP types:
PHP код:
CP_ARROW
CP_CIRCLE_BIG
CP_CIRCLE
CP_INVISIBLE 
Callbacks:
PHP код:
OnPlayerEnterCheckpointEx(playeridcheckpoint[], CPID)
OnPlayerExitCheckpointEx(playeridcheckpoint[], CPID)
OnCheckpointStreamIn(playeridcheckpoint[], CPID)
OnCheckpointStreamOut(playeridcheckpoint[], CPID)
//extas:
OnPlayerTextInCP(playeridname[], CPIDtext[])
OnPlayerKeyStateChangeInCP(playeridname[], CPIDnewkeysoldkeys)
OnCheckpointCreate(name[29], CPType:typecolorFloat:xFloat:yFloat:zworldidinterioridforplayer
Funзхes:
PHP код:
CreatePlayerCheckPoint(playeridname[29] = ""CPType:type CP_CIRCLEcolor0x99FF0000Float:xFloat:yFloat:zworldid = -1interiorid = -1);
CreateCheckPoint(name[29] = ""CPType:type CP_CIRCLEcolor0x99FF0000Float:xFloat:yFloat:zworldid = -1interiorid = -1forplayer= -1);
IsPlayerInCheckpointEx(playeridname[]);
IsPlayerInAnyCheckpointEx(playerid);
IsPlayerInCP(playeridCPID);
DestroyCheckPointCPID);
//cores:
SetCheckPointColor(CPIDcolor=0x99FF0000);
//movement
SetCPtoPosCPIDFloat:x=0.0Float:y=0.0Float:z=0.0);
MoveCPtoPosCPIDFloat:x=0.0Float:y=0.0Float:z=0.0Float:speed2.0);
//attachґs CP
AttachCPtoObjectCPIDobjectidFloat:x=0.0Float:y=0.0Float:z=0.0);
AttachCPtoPlayerCPIDplayeridFloat:x=0.0Float:y=0.0Float:z=0.0);
AttachCPtoVehicleCPIDvehicleidFloat:x=0.0Float:y=0.0Float:z=0.0);
AttachCPtoCPCPIDCPattachedFloat:x=0.0Float:y=0.0Float:z=0.0);
//nomes:
GetCPNameCPID);
SetNameCP(CPIDname[]);
RenameCP(oldname[], newname[]); 
Processamento de CheckPoints:
PHP код:
CPEnter:Pref(playeridCPID)
{
  
SendClientMessage(playerid, -1"vocк entrou no CP da prefeitura!");
  return 
1;
}
CPExit:Pref(playeridCPID)
{
  
SendClientMessage(playerid, -1"vocк saiu do CP na prefeitura!");
  return 
1;

[Brevemente FS demonstrativo da include]

Print Screens & Video:



https://www.youtube.com/watch?v=u1nG...ature=*********

Notas:
  • Versгo inicial com funcionalidade bбsica, em breve tera muito mais coisas novas!
  • Se quiser dar sugestхes, Criticas Construtivas ou melhorias seja educado!
  • gostou de verdade e vai utilizar? entгo avalie, e GIVE ME RP! hahahah :P
Creditos:
Quote:
RazorGuigo -> Inital Realese, Ideias, Funcionalidade extras, Cores, Features...
Dayvison -> Funcionamento Interno dos CP remodelados!
OKStyle-> 5 novos CheckPoints Coloridos adicionados no V1.3

Link para download:

Pastebin : https://pastebin.com/aqE0MSHC [V 1.5.2]
GitHub: https://github.com/RodrigoDornelles/MCF-CheckPoint [V 1.5.4]
Reply
#2

V 1.2:
Quote:
Add:
+SetCPpos( CPID, Float:x=0.0, Float:y=0.0, Float:z=0.0);
+MoveCP( CPID, Float:x=0.0, Float:y=0.0, Float:z=0.0, Float:speed= 2.0);
+mensagem de erro, caso vocк nгo esteja utilizando streamer
+CP for player (o checkpoint й criado apenas para o jogador descrito)

fix:
-quando vocк passa por debaixo de um CP, e depois vai embora, й chama "OnPlayerLeaveCP" foi concertado!
V 1.3:
Quote:
Merged:
*CreatePlayerCheckPoint(playerid, name[29] = "", CPType:type, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1);
*CreateCheckPoint(name[29] = "", CPType:type, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1, forplayer= -1);
*OnPlayerEnterCheckpointEx(playerid, checkpoint[])
*OnPlayerExitCheckpointEx(playerid, checkpoint[])
*IsPlayerInCheckpointEx(playerid, name[])

removed:
-OnPlayerCPchange(playerid, CPID, toggle);
-SetCPInterior( CPID, interiorid);
-SetCPVirtualWord( CPID, worldid);
-SetCPpos( CPID, Float:x=0.0, Float:y=0.0, Float:z=0.0);
-MoveCP( CPID, Float:x=0.0, Float:y=0.0, Float:z=0.0, Float:speed= 2.0);

Added:
+5 novos modelos iguais ao originais (coloridos)
+processador de CheckPoint "Exemplo: CPEnter:Pref(playerid)"
+IsPlayerInAnyCheckpointEx(playerid);
+DestroyCheckPoint( CPID);

V 1.4:
Quote:
Edited:

*OnPlayerEnterCheckpointEx(playerid, checkpoint[], CPID)
*OnPlayerExitCheckpointEx(playerid, checkpoint[], CPID)

Added:
+OnPlayerTextInCP(playerid, name[], CPID, text[])
+OnPlayerKeyStateChangeInCP(playerid, name[], CPID, newkeys, oldkeys)

+SetCPtoPos( CPID, Float:x=0.0, Float:y=0.0, Float:z=0.0);
+MoveCPtoPos( CPID, Float:x=0.0, Float:y=0.0, Float:z=0.0, Float:speed= 2.0);

V 1.5:
Quote:
NOW HEXADECIMAL COLOURS!
Edited:

*CreatePlayerCheckPoint(playerid, name[29] = "", CPType:type = CP_CIRCLE, color= 0x99FF0000, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1);
*CreateCheckPoint(name[29] = "", CPType:type = CP_CIRCLE, color= 0x99FF0000, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1, forplayer= -1);

Added:
+SetCheckPointColor(CPID, color=0x99FF0000);
+IsPlayerInCP(playerid, CPID);

V 1.5.2.1:
Quote:
Fixes:

*Z adjustment
*CP name called
*Optimizations and improvements

Added:
OnCheckpointCreate(name[29], CPType:type, color, Float:x, Float:y, Float:z, worldid, interiorid, forplayer); //return 0 to cancel creation!
OnCheckpointStreamIn(playerid, checkpoint[], CPID)
OnCheckpointStreamOut(playerid, checkpoint[], CPID)
GetCPName( CPID);
SetNameCP(CPID, name[]);
RenameCP(oldname[], newname[]);

Reply
#3

Bem necessario, como vocк jб mim disse no Discord.

Bom trabalho, +rep
Reply
#4

Ficou muito bom!

rep+
Reply
#5

Nego jб fala que ficou уtimo sem ao menos olhar o cуdigo...
A ideia й boa, mas muito mal executada. Essa include tem tantos problemas, como o design bem cagado e diversos problemas de performance. Eu listei alguns dos problemas a serem corrigidos, queria ter mais tempo pra escrever as alteraзхes necessбrias pro resto porque percebi outras falhas que comprometem o funcionamento...

1. Vocк deveria tornar as variбveis estбticas, assim nego nгo consegue editar uma variбvel "sem querer" e fazer merda;
2. i_CPOBJECT e i_CPAREA deveriam estar dentro do enum MAX_CP_INFO;
3. AttachCPtoObject, AttachCPtoPlayer, AttachCPtoVehicle, AttachCPtoCP, sйrio?
4. O cуdigo dentro de SetCPInterior e SetCPVirtualWord й tгo ruimzinho, use Streamer_SetIntData;
5. CallRemoteFunction й pra chamar uma funзгo num FilterScript e й lenta, use CallLocalFunction;
6. Vocк nгo tem organizaзгo alguma e as variбveis e funзхes foram escritas de qualquer jeito, recomendo aprender sobre alguns stantards de programaзгo.

PHP код:
if((i_CPCOUNT 1) > MAX_CPS)    return printf("[ERROR] max checkpoints loaded %d/%d"i_CPCOUNT 1MAX_CPS);
//Isso funciona mesmo?
if(i_CPCOUNT == MAX_CPS)
    return 
printf("[ERROR] max checkpoints loaded %d/%d"i_CPCOUNT 1MAX_CPS); 
PHP код:
//Mude
stock bool:IsPlayerInCP(playeridCPID)
{
    if(
i_PlayerInCP[playerid][CPID]) return true;
    return 
false;
}
//Para
stock bool:IsPlayerInCP(playeridCPID)
{
    return 
i_PlayerInCP[playerid][CPID];

Como eu disse, estб tudo muito ruim, mas a ideia й boa. Comeзa com essas alteraзхes e vai aprimorando.
Reply
#6

Reforзando o que o usuбrio acima disse, vocк dб jus a sua assinatura (Mito da Programaзгo Orientada a Gambiarra.).

O cуdigo estб muito ruim semanticalmente e nada escalбvel. A impressгo que eu tenho й que vocк programou pra vocк mesmo. As nomenclaturas em sua grande maioria nгo fazem sentido.

Vou repetir o que sempre falo: qualquer um pode fazer um cуdigo que a mбquina vai ler e interpretar. Desenvolvedor cria cуdigo legнvel para humanos.

Vocк jб tem a lуgica geral de desenvolvimento. Estб na hora de vocк deixar o nнvel crianзa e comeзar a criar cуdigos de verdade. Comece a estudar mais a teуrica para melhorar e aprender a escrever cуdigo para humanos se a sua intenзгo й seguir a carreira.
Reply
#7

@OFF

є Kamper є concordo

ele ainda da 5 star no tуpico q ele mesmo criou

@TOPPIC

cara nem oque tu diz no discord eu entendo, esses Script entгo, ta complicado, cк escreveu eles com o pй ?
._.
Reply
#8

Quote:
Originally Posted by RazorGuigo
Посмотреть сообщение
Versгo inicial com funcionalidade bбsica, em breve tera muito mais coisas novas!
re to: renatog
Lanзei um prй-realese, para melhorar o codigo de acordo com a avaliaзгo dos usuarios, por favor seja menos toxico


Quote:
Originally Posted by renatog
Посмотреть сообщение
PHP код:
if((i_CPCOUNT 1) > MAX_CPS)    return printf("[ERROR] max checkpoints loaded %d/%d"i_CPCOUNT 1MAX_CPS);
//Isso funciona mesmo?
if(i_CPCOUNT == MAX_CPS)
    return 
printf("[ERROR] max checkpoints loaded %d/%d"i_CPCOUNT 1MAX_CPS); 
bom funciona, mas foi um vacilo meu esta identaзгo vou dar uma melhorada nela
Quote:
Originally Posted by renatog
Посмотреть сообщение
PHP код:
//Mude
stock bool:IsPlayerInCP(playeridCPID)
{
    if(
i_PlayerInCP[playerid][CPID]) return true;
    return 
false;
}
//Para
stock bool:IsPlayerInCP(playeridCPID)
{
    return 
i_PlayerInCP[playerid][CPID];

Eu fiz da outra maneira, pois caso tente no segundo mйtodo estava ocorrendo aviso na tipagem, mais apуs eu atualizar meu compilador hoje, este erro passou!
Quote:
Originally Posted by renatog
Посмотреть сообщение
Como eu disse, estб tudo muito ruim, mas a ideia й boa. Comeзa com essas alteraзхes e vai aprimorando.
sim sim, vou ir melhorando, mas por favor seja + "tecnico" fazendo elogios e criticas contrutivas, e menos "crianзгo" utilizando-se de ofensas e insultos!




Re to: Kamper
Quote:
Originally Posted by Kamper
Посмотреть сообщение
A impressгo que eu tenho й que vocк programou pra vocк mesmo. As nomenclaturas em sua grande maioria nгo fazem sentido.
Bom desculpa ai, vou comentar mais, e trocar o nome das variantes, para mim ficou claro o funcionamento delas,
"declaraзгo dos nomes de variaveis nem sempre me dou bem, kkk, nas prova de Anбlise de Sistemas, й as unicas questхes que erro :P" aguarde pela [V 1.3] que tu vai achar melhor ^^
Reply
#9

Porque poe
Код:
#if !defined MAX_CPS
    #define MAX_CPS (500)
#endif
sу um
Код:
 #define MAX_CPS (500)
nгo daria o mesmo efeito ? '-'~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

https://sampforum.blast.hk/showthread.php?tid=341455
https://sampforum.blast.hk/showthread.php?tid=436648

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Ideia : й um objeto esses " checkpoint's " certamente da pra texturizar eles, e por a cor q quiser
Reply
#10

Quote:
Originally Posted by KinG7
Посмотреть сообщение
Porque poe
Код:
#if !defined MAX_CPS
    #define MAX_CPS (500)
#endif
sу um
Код:
 #define MAX_CPS (500)
nгo daria o mesmo efeito ? '-'~
nгo, pois de modo anterior, vc pode alterar o o valor de "MAX_CPS" no seu GM ou FS, tem ter que mecher na include!


Quote:
Originally Posted by KinG7
Посмотреть сообщение
Vou implementar estes objetos hб include, e colocar os devidos creditos

Quote:
Originally Posted by KinG7
Посмотреть сообщение
Ideia : й um objeto esses " checkpoint's " certamente da pra texturizar eles, e por a cor q quiser
Eu tentei fazer isso, mas porem, os objetos ficaram pretos.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)