powerkip96 Geplaatst: 15 oktober 2010 Rapport Geplaatst: 15 oktober 2010 Ik wil graag een command maken maar ik weet niet welke codes ik moet gebruiken; Ik wil graag een command dat als bijvoorbeeld er een noob in game komt, overtreed de regels dat ik dan /awarn (id) kan doen en dat is zeg maar Fakecommand en dan doet hij /help, zou dit mogelijk kunnen zijn en zoja? Kan je dan 't script hier onder neer zetten? Alvast bedankt, Surkan Reageren
Gast Geplaatst: 15 oktober 2010 Rapport Geplaatst: 15 oktober 2010 (bewerkt) Ik wil graag een command maken maar ik weet niet welke codes ik moet gebruiken; Ik wil graag een command dat als bijvoorbeeld er een noob in game komt, overtreed de regels dat ik dan /awarn (id) kan doen en dat is zeg maar Fakecommand en dan doet hij /help, zou dit mogelijk kunnen zijn en zoja? Kan je dan 't script hier onder neer zetten? Alvast bedankt, Surkan Het is niet duidelijk wat je bedoelt. Ik zie wat grammatica foutjes, waardoor ik niet begrijp wat je bedoelt. Bedoel je dat als een nieuwe speler regels overtreedt, hij/zij de text ontvangt van de /help command? Dat is mogelijk. Maar dan moet je zorgen dat er een ClientMessage naar die speler word gestuurd. Bewerkt: 15 oktober 2010 door Gast Reageren
powerkip96 Geplaatst: 15 oktober 2010 Auteur Rapport Geplaatst: 15 oktober 2010 (bewerkt) Ik beodel, dat als jij bijvoorbeeld hackd(dat mag niet staat in de rules)"Noob Voorbeeld" dan doe ik /awarn (jouid) en dan word de /help command bij jou ingetypt, uit jou reactie begrijp ik dus: SendClientMessage(playerid, Color_Code, "/help") of heb ik 't verkeerd begrepen ;o? Bewerkt: 15 oktober 2010 door powerkip96 Reageren
Morph1 Geplaatst: 15 oktober 2010 Rapport Geplaatst: 15 oktober 2010 (bewerkt) heb je je /help in een menutje of dialogje, of is het gewoon in de chat? edit:: bij de code hierboven zal dus alleen bij de speler (n00b in jou geval) in de chat komen te staan : "/help" verder nix Bewerkt: 15 oktober 2010 door Morph1 Reageren
Gast Geplaatst: 15 oktober 2010 Rapport Geplaatst: 15 oktober 2010 Dat klopt, wat Morph1 zegt. Kun jij jouw /help command kopiëren en plakken? Dat zou een stuk makkelijker zijn, voor ons Reageren
powerkip96 Geplaatst: 15 oktober 2010 Auteur Rapport Geplaatst: 15 oktober 2010 Dat klopt, wat Morph1 zegt. Kun jij jouw /help command kopiëren en plakken? Dat zou een stuk makkelijker zijn, voor ons Tis een dialog. ;o Reageren
Big Boss Geplaatst: 15 oktober 2010 Rapport Geplaatst: 15 oktober 2010 Als je dcmd of zcmd gebruikt is het makkelijk opgelost; dcmd_awarn(playerid, params[]) { new target; if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_RED, "Usage: /awarn [Playerid/PartOfName]"); // Rest van je admin stuff waar je checkt of de speler admin is, etc. // Waar je wil dat de andere speler het help commando te zien krijgt dcmd_help(target, " "); return 1; } Reageren
powerkip96 Geplaatst: 15 oktober 2010 Auteur Rapport Geplaatst: 15 oktober 2010 Als je dcmd of zcmd gebruikt is het makkelijk opgelost; dcmd_awarn(playerid, params[]) { new target; if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_RED, "Usage: /awarn [Playerid/PartOfName]"); // Rest van je admin stuff waar je checkt of de speler admin is, etc. // Waar je wil dat de andere speler het help commando te zien krijgt dcmd_help(target, " "); return 1; } ik snap die //'s niet ;o Reageren
Gast Geplaatst: 16 oktober 2010 Rapport Geplaatst: 16 oktober 2010 Als je dcmd of zcmd gebruikt is het makkelijk opgelost; dcmd_awarn(playerid, params[]) { new target; if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_RED, "Usage: /awarn [Playerid/PartOfName]"); // Rest van je admin stuff waar je checkt of de speler admin is, etc. // Waar je wil dat de andere speler het help commando te zien krijgt dcmd_help(target, " "); return 1; } ik snap die //'s niet ;o Dat is een kwestie van lezen. "Rest van je admin stuff waar je checkt of de speler admin is, etc." bijv: 'if(IsPlayerAdmin(playerid))' of 'if(IsLogged[playerid] == 0)' of 'if(IsLogged[playerid] == 1)' (de IsLogged hangt af van je script) Reageren
powerkip96 Geplaatst: 16 oktober 2010 Auteur Rapport Geplaatst: 16 oktober 2010 Als je dcmd of zcmd gebruikt is het makkelijk opgelost; dcmd_awarn(playerid, params[]) { new target; if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_RED, "Usage: /awarn [Playerid/PartOfName]"); // Rest van je admin stuff waar je checkt of de speler admin is, etc. // Waar je wil dat de andere speler het help commando te zien krijgt dcmd_help(target, " "); return 1; } ik snap die //'s niet ;o Dat is een kwestie van lezen. "Rest van je admin stuff waar je checkt of de speler admin is, etc." bijv: 'if(IsPlayerAdmin(playerid))' of 'if(IsLogged[playerid] == 0)' of 'if(IsLogged[playerid] == 1)' (de IsLogged hangt af van je script) ik bedoel dit: // Waar je wil dat de andere speler het help commando te zien krijgt Reageren
powerkip96 Geplaatst: 16 oktober 2010 Auteur Rapport Geplaatst: 16 oktober 2010 (bewerkt) Ik heb nu iets verandert, dat doet het maar ik heb STRCMP bij /help cmd, nu krijg ik 2x error 017: undefined symbol "dcmd_help" Hier mn help: if (strcmp("/help", cmdtext, true, 10) == 0) { hierisdedialog return 1; } en dit heb ik nog zelf toegevoegd: dcmd(awarn, 3, cmdtext); dcmd(help, 3, cmdtext); En dit is de cmd : dcmd_awarn(playerid, params[]) { new target; if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_RED, "Usage: /awarn [Playerid/PartOfName]"); if ((IsPlayerAdmin(playerid)) || PlayerInfo[playerid][pAdmin] >= 101) // Waar je wil dat de andere speler het help commando te zien krijgt dcmd_help(target, " "); return 1; } De errors: (4220) : error 017: undefined symbol "dcmd_help" (10580) : error 017: undefined symbol "dcmd_help" Bewerkt: 16 oktober 2010 door powerkip96 Reageren
Gast Geplaatst: 17 oktober 2010 Rapport Geplaatst: 17 oktober 2010 Ik heb nu iets verandert, dat doet het maar ik heb STRCMP bij /help cmd, nu krijg ik 2x error 017: undefined symbol "dcmd_help" Hier mn help: if (strcmp("/help", cmdtext, true, 10) == 0) { hierisdedialog return 1; } en dit heb ik nog zelf toegevoegd: dcmd(awarn, 3, cmdtext); dcmd(help, 3, cmdtext); En dit is de cmd : dcmd_awarn(playerid, params[]) { new target; if(sscanf(params, "u", target)) return SendClientMessage(playerid, COLOR_RED, "Usage: /awarn [Playerid/PartOfName]"); if ((IsPlayerAdmin(playerid)) || PlayerInfo[playerid][pAdmin] >= 101) // Waar je wil dat de andere speler het help commando te zien krijgt dcmd_help(target, " "); return 1; } De errors: (4220) : error 017: undefined symbol "dcmd_help" (10580) : error 017: undefined symbol "dcmd_help" Je gebruikt geen dcmd, geen wonder dat het niet werkt. Hoe denk je dat je dcmd commands kan gebruiken als dcmd niet defined is? Doe gewoon zoiets: if(strcmp(cmd, "/awarn", true) ==0) { new giveplayerid; tmp = strtok(cmdtext, idx); if(strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "Gebruik: /awarn <playerid> return 1; { giveplayerid = strval(tmp); if(!IsPlayerConnected(giveplayerid)) { SendClientMessage(playerid, COLOR_WHITE, "Speler is niet online!"); retrun 1; } ShowPlayerDialog(giveplayerid,1,"MyDialog","1. Line\r\n2. Line\r\n3. Line","Option 1", "Option 2"); return 1; } Klik hier voor ShowPlayerDialog uitleg: http://wiki.sa-mp.com/wiki/ShowPlayerDialog Wees wel zeker dat je giveplayerid gebruikt ipv playerid. Reageren
Morph1 Geplaatst: 17 oktober 2010 Rapport Geplaatst: 17 oktober 2010 (bewerkt) @ iedereen : XD lol jullie zijn hem helemaal gek aan het maken, eerst zegt big boss "als je dcmd of zcmd gebruikt" terwijl er ook gewoon een stuk sscanf in staat XD, daarna word er gezegd door biesmen : "Je gebruikt geen dcmd, geen wonder dat het niet werkt. Hoe denk je dat je dcmd commands kan gebruiken als dcmd niet defined is?" en gaat hij een strtok code geven:S. dan moet je hem wel de strtok geven lijkt mij. en anders geef je hem tog gewoon de dcmd define:S @ powerkip : oke hier komt ie: bovenaan de dcmd define, dcmd is de makkelijkste mannier voor dit soort dingen. : #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 nu kan je gebruik maken van dcmd. nu je tweede fout: jij heb dit : dcmd(awarn, 3, cmdtext); dcmd(help, 3, cmdtext); dat cijfertje 3 geeft aan hoeveel letters het commando heeft, jij kan mij niet wijsmaken dat "awarn" en "help" bijde 3 letters hebben, dus dat moet je veranderen naar : dcmd(awarn, 5, cmdtext); dcmd(help, 4, cmdtext); derde fout : jij zeg in je laatste post (tenzij je nu al een nieuwe heb gepost) dat je dus eigenlijk dit heb staan : public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/help", cmdtext, true, 10) == 0) { ShowPlayerDialog(jou /help dialog info hier); return 1; } dcmd(awarn, 3, cmdtext); dcmd(help, 3, cmdtext); } fout 3.1: een dialoog hoef je niet te returnen. fout 3.2: je heb via de normale weg in samp een /help command gemaakt, waarom wil je er dan ook nog een in dcmd. dan is het niet zo raar dat je errors krijg, dit word dus gewoon zo: public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/help", cmdtext, true, 10) == 0) { ShowPlayerDialog(jou /help dialog info hier); } dcmd(awarn, 5, cmdtext); return 0; } fout 4 [hopelijk de laatste]: naja dit is niet echt een fout maar gewoon een foute code die jij heb gekopierd [laatmaarXD]. aan jou errors te zien gebruik jij WEL sscanf omdat dat in de code wel gewoon herkent word maar sscanf eigenlijk niet nodig is. ik zet hier wel de code hoe ik hem zou maken met wat dingen erachter van wat het is enz, [dan weet je het hopelijk voor de volgende keer als je weer zoiets wilt maken] dcmd_awarn(playerid, params[]) // wat gebeurt er als iemand /awarn [iD] typt { new noob = strval(params); // sla het id van de speler op in de variable "noob" if(!strlen(params))// kijken of alles wel goed is ingetypt { SendClientMessage(playerid, 0xFF0000AA, "USAGE : /awarn [iD]"); // zo niet stuur berichtje } if(IsPlayerAdmin(playerid) == 0)// kijken of de speler met RCon is ingelogd { SendClientMessage(playerid, 0xFF0000AA, "Je bent Geen admin!!!"); // zo niet stuur berichtje } else // als bovenstaande allemaal goed is { ShowPlayerDialog(noob, [KOPIEER de rest uit je /help dialog en verander daar nix aan[let er wel op dat je bij playerid "noob" zet]); SendClientMessage(playerid, 0xFF0000AA, "Je hebt de noob de /help laten zien"); // berichtje voor admin in chat } return 1; } beetje chaotisch maja, als je iets niet snapt of het werkt niet pm maar edit: lol, alle scriptjes foutloos getypt in de texteditorXD Bewerkt: 18 oktober 2010 door Morph1 Reageren
Gast Geplaatst: 19 oktober 2010 Rapport Geplaatst: 19 oktober 2010 (bewerkt) Wat je ook kan doen is: maak een functie voor je dialog. e.g boven aan je script: forward ShowHelpDialog(playerid); Dan type je dit ergens in je script: public ShowHelpDialog(playerid) { ShowPlayerDialog(Je help dialog informatie); return 1; } Dan doe je dit bij je help command: if (strcmp("/help", cmdtext, true) == 0) { ShowHelpDialog(playerid); return 1; } en dit doe je bij je awarn command: if (strcmp("/awarn", cmdtext, true) == 0) { new giveplayerid; tmp = strtok(cmdtext, idx); giveplayerid = strval(tmp); if(strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "Gebruik: /awarn <playerid>"); return 1; { if(!IsPlayerConnected(giveplayerid)) { SendClientMessage(playerid, COLOR_WHITE, "Speler is niet online!"); return 1; } ShowHelpDialog(giveplayerid); } } Bewerkt: 19 oktober 2010 door Gast Reageren
Morph1 Geplaatst: 19 oktober 2010 Rapport Geplaatst: 19 oktober 2010 Wat je ook kan doen is: new giveplayerid; tmp = strtok(cmdtext, idx); giveplayerid = strval(tmp); if(strlen(tmp)) je geeft hem nu weer een strtok functie, ik neem aan dat hij nog geen strtok onderaan zijn GM heeft staan. als je hem echt gebruik wilt laten maken van strtok zou ik tog echt de functie meegeven, en verder is dcmd gewoon makkelijker voor beginners, ik had me ook een tijdje in strtok verdiept maar dat snapte ik na 2 dagen nog niet terwijl ik dcmd al in 10 minuutjes doorhad 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.