Gast Geplaatst: 6 april 2010 Rapport Geplaatst: 6 april 2010 (bewerkt) Hallo, Mijn vraag is of je admin scripts, zoals kick/ban/freeze spelers met een reden ook in je Gamemode kan hebben. Altijd als ik deze commands wil maken, word ik geforceerd om er een filterscript van te maken. Maar daar zuig ik momenteel nog een beetje in, dus ik probeer het op de andere manier maar dat lukt me al HELEMAAL niet. Ik kan NIET vinden hoe je playerids kickt die je zelf invoerd. Dus.. Edit: Als dat niet mogelijk is, weten jullie dan of het mogelijk is om je filterscript op jouw gamemode te linken? Anders moet ik mijn account systeem hercoderen in een filterscript, en dat zie ik niet zitten.. Edit2: Ik heb zojuist iets gevonden, waardoor mijn vraag superdedommer domste vraag is die je kunt stellen. Topic lock/delete a.u.b Bewerkt: 6 april 2010 door Gast Reageren
grandtheftauto... Geplaatst: 7 april 2010 Rapport Geplaatst: 7 april 2010 Je kan een admin script ook in een GM (GameMode) zetten, maar in een FS (FilterScript) is het toch wat handiger Reageren
nulop Geplaatst: 7 april 2010 Rapport Geplaatst: 7 april 2010 Je kan een admin script ook in een GM (GameMode) zetten, maar in een FS (FilterScript) is het toch wat handiger In een gamemode plaatsen is toch veel handiger? Je hebt je stats altijd bij je, en kan zo alles een stuk makkelijker maken. Bijvoorbeeld huizen saven, wapens saven, enzovoort. Anders moet je de hele tijd bezig zijn met CallRemoteFunction(); of moeilijk doen met accounts openen. Reageren
grandtheftauto... Geplaatst: 8 april 2010 Rapport Geplaatst: 8 april 2010 P.S als je met freeze, kick,ban enz. wilt werken kun je dat niet natuurlijk met strcmp doen je moet dan met dcmd werken: strcmp command: if(strcmp(cmdtext, "/naamcommand", true) == 0){ dcmd command: dcmd_naamcommand(playerid,params[]) Reageren
nulop Geplaatst: 8 april 2010 Rapport Geplaatst: 8 april 2010 P.S als je met freeze, kick,ban enz. wilt werken kun je dat niet natuurlijk met strcmp doen je moet dan met dcmd werken: strcmp command: if(strcmp(cmdtext, "/naamcommand", true) == 0){ dcmd command: dcmd_naamcommand(playerid,params[]) Ik gebruik strcmp al jaren, in combinatie met strtok. Het is misschien langzamer, maar wel overzichtelijker. Reageren
Gast Geplaatst: 8 april 2010 Rapport Geplaatst: 8 april 2010 P.S als je met freeze, kick,ban enz. wilt werken kun je dat niet natuurlijk met strcmp doen je moet dan met dcmd werken: strcmp command: if(strcmp(cmdtext, "/naamcommand", true) == 0){ dcmd command: dcmd_naamcommand(playerid,params[]) Ik doe strcmp, werkt ook fantastsch. Ik ben ook van plan om Filterscripts te gaan gebruiken, maar dan heb ik geen idee hoe ik kan zorgen dat hij de stats van de spelers gebruikt/server Reageren
coolnniek9 Geplaatst: 9 april 2010 Rapport Geplaatst: 9 april 2010 /Freeze: if(strcmp(cmd, "/freeze", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /freeze [playerid/PartOfName]"); return 1; } new playa; playa = ReturnUser(tmp); if(PlayerInfo[playa][pAdmin] > 0) { SendClientMessage(playerid, COLOR_GRAD2, "Admins can not be frozen"); return 1; } if (PlayerInfo[playerid][pAdmin] >= 2) { if(IsPlayerConnected(playa)) { if(playa != INVALID_PLAYER_ID) { GetPlayerName(playa, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); TogglePlayerControllable(playa, 0); format(string, sizeof(string), "[ADMIN]: %s Freezes %s",sendername, giveplayer); printf("%s",string); PlayerFrozen[playerid] = 1; format(string, sizeof(string), "[ADMIN]: %s was Frozen by %s",giveplayer ,sendername); ABroadCast(COLOR_LIGHTRED,string,1); AdminLog(string); format(string, sizeof(string), "[ADMIN]: You were Frozen by %s.", sendername); SendClientMessage(playa, COLOR_LIGHTRED, string); } } } else { SendClientMessage(playerid, COLOR_GRAD1, " You are not authorized to use that command!"); } } return 1; } /Unfreeze: if(strcmp(cmd, "/unfreeze", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /unfreeze [playerid]"); return 1; } new playa; playa = ReturnUser(tmp); if (PlayerInfo[playerid][pAdmin] >= 2) { if(IsPlayerConnected(playa)) { if(playa != INVALID_PLAYER_ID) { if(PlayerInfo[playa][pLocked] == 1) { SendClientMessage(playerid, COLOR_GREY, " Player Is locked and cant be unfrozen !"); return 1; } GetPlayerName(playa, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); TogglePlayerControllable(playa, 1); format(string, sizeof(string), "[ADMIN]: %s UnFroze %s",sendername, giveplayer); printf("%s",string); PlayerFrozen[playerid] = 0; format(string, sizeof(string), "[ADMIN]: %s was UnFrozen by %s",giveplayer ,sendername); ABroadCast(COLOR_LIGHTRED,string,1); format(string, sizeof(string), "[ADMIN]: You were UnFrozen by %s.", sendername); SendClientMessage(playa, COLOR_LIGHTRED, string); } } } else { SendClientMessage(playerid, COLOR_GRAD1, " you are not authorized to use that command!"); } } return 1; } Als je een goeie gamemode hebt, zal deze werken. Anders post je ff de errors en dan maak ik een simpele voor in een gamemode. /kick: if(strcmp(cmd, "/kick", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /kick [playerid/PartOfName] [reason]"); return 1; } giveplayerid = ReturnUser(tmp); if (PlayerInfo[playerid][pAdmin] >= 2) // Admin level!! ( In dit geval 2 ) { if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) { SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /kick [playerid/PartOfName] [reason]"); return 1; } new year, month,day; getdate(year, month, day); format(string, sizeof(string), "[ADMIN]: %s was kicked by %s, reason: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year); KickLog(string); format(string, sizeof(string), "[ADMIN]: %s was kicked by %s, reason: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year); SendClientMessageToAll(COLOR_LIGHTRED, string); Kick(giveplayerid); return 1; } } } else { format(string, sizeof(string), " %d is not an active player.", giveplayerid); SendClientMessage(playerid, COLOR_GRAD1, string); } } return 1; } Reageren
Gast Geplaatst: 9 april 2010 Rapport Geplaatst: 9 april 2010 /Freeze: if(strcmp(cmd, "/freeze", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /freeze [playerid/PartOfName]"); return 1; } new playa; playa = ReturnUser(tmp); if(PlayerInfo[playa][pAdmin] > 0) { SendClientMessage(playerid, COLOR_GRAD2, "Admins can not be frozen"); return 1; } if (PlayerInfo[playerid][pAdmin] >= 2) { if(IsPlayerConnected(playa)) { if(playa != INVALID_PLAYER_ID) { GetPlayerName(playa, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); TogglePlayerControllable(playa, 0); format(string, sizeof(string), "[ADMIN]: %s Freezes %s",sendername, giveplayer); printf("%s",string); PlayerFrozen[playerid] = 1; format(string, sizeof(string), "[ADMIN]: %s was Frozen by %s",giveplayer ,sendername); ABroadCast(COLOR_LIGHTRED,string,1); AdminLog(string); format(string, sizeof(string), "[ADMIN]: You were Frozen by %s.", sendername); SendClientMessage(playa, COLOR_LIGHTRED, string); } } } else { SendClientMessage(playerid, COLOR_GRAD1, " You are not authorized to use that command!"); } } return 1; } /Unfreeze: if(strcmp(cmd, "/unfreeze", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /unfreeze [playerid]"); return 1; } new playa; playa = ReturnUser(tmp); if (PlayerInfo[playerid][pAdmin] >= 2) { if(IsPlayerConnected(playa)) { if(playa != INVALID_PLAYER_ID) { if(PlayerInfo[playa][pLocked] == 1) { SendClientMessage(playerid, COLOR_GREY, " Player Is locked and cant be unfrozen !"); return 1; } GetPlayerName(playa, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); TogglePlayerControllable(playa, 1); format(string, sizeof(string), "[ADMIN]: %s UnFroze %s",sendername, giveplayer); printf("%s",string); PlayerFrozen[playerid] = 0; format(string, sizeof(string), "[ADMIN]: %s was UnFrozen by %s",giveplayer ,sendername); ABroadCast(COLOR_LIGHTRED,string,1); format(string, sizeof(string), "[ADMIN]: You were UnFrozen by %s.", sendername); SendClientMessage(playa, COLOR_LIGHTRED, string); } } } else { SendClientMessage(playerid, COLOR_GRAD1, " you are not authorized to use that command!"); } } return 1; } Als je een goeie gamemode hebt, zal deze werken. Anders post je ff de errors en dan maak ik een simpele voor in een gamemode. /kick: if(strcmp(cmd, "/kick", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /kick [playerid/PartOfName] [reason]"); return 1; } giveplayerid = ReturnUser(tmp); if (PlayerInfo[playerid][pAdmin] >= 2) // Admin level!! ( In dit geval 2 ) { if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) { SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /kick [playerid/PartOfName] [reason]"); return 1; } new year, month,day; getdate(year, month, day); format(string, sizeof(string), "[ADMIN]: %s was kicked by %s, reason: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year); KickLog(string); format(string, sizeof(string), "[ADMIN]: %s was kicked by %s, reason: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year); SendClientMessageToAll(COLOR_LIGHTRED, string); Kick(giveplayerid); return 1; } } } else { format(string, sizeof(string), " %d is not an active player.", giveplayerid); SendClientMessage(playerid, COLOR_GRAD1, string); } } return 1; } Je bent de bron vergeten: GTA RP. Ik heb deze script al bestudeerd, daardoor zei ik 'laat maar' Reageren
Wanted Geplaatst: 9 april 2010 Rapport Geplaatst: 9 april 2010 ... if(IsPlayerConnected(playerid)) ... Deze check is volledig onnodig. Hoe kan een speler een command intypen als deze niet met de server verbonden is. ... if(IsPlayerConnected(playa)) { if(playa != INVALID_PLAYER_ID) // <--- Deze ... Ook de aangewezen regel hierboven mag weg. Als de speler niet verbonden is met de server, zorgt de eerste check er al voor dat het commando afgebroken wordt. Om dan nog eens te controleren of er niet toevallig een verkeerd speler id ingevoerd wordt, is niet nodig, en vertraagd het commando alleen maar. (Niet met veel hoor! Misschien maar met 0.0001 seconde.) Reageren
Gast Geplaatst: 10 april 2010 Rapport Geplaatst: 10 april 2010 (bewerkt) if(strcmp(cmd, "/kick", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /kick [playerid/PartOfName] [reason]"); return 1; } giveplayerid = ReturnUser(tmp); if (PlayerInfo[playerid][pAdmin] >= 2) // Admin level!! ( In dit geval 2 ) { if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) { SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /kick [playerid/PartOfName] [reason]"); return 1; } new year, month,day; getdate(year, month, day); format(string, sizeof(string), "[ADMIN]: %s was kicked by %s, reason: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year); KickLog(string); format(string, sizeof(string), "[ADMIN]: %s was kicked by %s, reason: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year); SendClientMessageToAll(COLOR_LIGHTRED, string); Kick(giveplayerid); return 1; } } } else { format(string, sizeof(string), " %d is not an active player.", giveplayerid); SendClientMessage(playerid, COLOR_GRAD1, string); } } oke, extra vraagje. Als ik deze code lees, kan ik hem in mijn script passen en hem aanpassen naar mijn account systeem. Maar daar leer ik echt helemaal niks van. Ik snap niet hoe ze dat doen dat je iets aan een andere PLAYER ID geeft. Ik zie hier allemaal dingetjes die er mee te maken hebben, maar ik heb geen idee hoe ze werken. Dus mijn vraag is: Of er iemand mij hiermee kan helpen? Mij dus uitleg geven hoe ik bijv /givemoney <PLAYERID> doe. Ik weet wel hoe je JEZELF money geeft, of kicked of freezed of wat dan ook, maar ik heb geen idee hoe je een reden en de playerid bij de command kan zetten. Bewerkt: 10 april 2010 door Gast Reageren
Remcconen Geplaatst: 10 april 2010 Rapport Geplaatst: 10 april 2010 Multi-param commands Tutorial door Sandra. Reageren
Gast Geplaatst: 10 april 2010 Rapport Geplaatst: 10 april 2010 Multi-param commands Tutorial door Sandra. Oh, ik wist niet dat he zo heette. Mijn oprechte excuses. Dankje Reageren
Recommended Posts
Een reactie plaatsen
Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.