dcmd is ontwikkeld door DracoBlue, van het SA-MP forum.
Vroeger (en nu nog altijd) werd er heel veel gebruik gemaakt van de strtok functie. Die werd al standaard meegeleverd met het lvdm script dat bij de server bestanden zit.
Echter, deze methode is TRAAG en INGEWIKKELD in vergelijking met dcmd.
Hoe werkt het?
Simpel gezegd, definiëer je eerst wat dcmd is door een #define toe te voegen bovenaan, daarna kan je het gewoon gebruiken.
Geen geknoei meer met strtok, etc. Immers, alles wat nog achter een commando wordt ingetypt, wordt AUTOMATISCH opgeslagen in de variabele params.
Tutorial
dcmd definiëren
Plak deze regel bovenaan bij je defines (zorg dat het allemaal op 1 regel staat, anders werkt het niet):
Zoals je ziet staat het eigenlijke commando nu BUITEN de callback OnPlayerCommandText. Dit betekent dat je al je commands nu ook in een apart bestand kan zetten (daar ben ik nog niet achter, helaas). Zo heb je niet zo'n hele hoop code hebt in je gamemode.
Simpel gezegd zet je dus dcmd neer, open het haakje, zet je commando neer zonder de '/', zet daarachter de lengte van het commando (opnieuw zonder de slash), gevolgd door cmdtext, het afsluitende haakje en de puntkomma.
dcmd_helloworld(playerid, params[])
// dcmd_commando(playerid, params[])
{
#pragma unused params
// params wordt hier niet gebruikt, d.i. om warnings te vermijden
GameTextForPlayer(playerid, "~w~Hello World!", 3000, 5);
return 1;
}
Nu vraag je je zeker af: Hoe werken die params dan?
Als je maar 1 parameter (meestal het playerid) nodig hebt, kun je zoiets maken:
dcmd_freeze(playerid, params[])
{
if(!strlen(params))
{
SendClientMessage(playerid, 0xFF0000FF, "GEBRUIK: /freeze [playerid]");
return 1;
}
new otherplayer = strval(params); // Sla het playerid op in [i]otherplayer[/i]
TogglePlayerControllable(otherplayer, false);
return 1;
}
Dit is dus dcmd, als je dit gesnapt hebt, kun je verder gaan met de rest van de tutorial. Zoniet, probeer wat uit tot je het snapt, of vraag het hier.
[Tutorial] dcmd en sscanf
Fast Command Processors
Introductie
Wat is dcmd?
dcmd is ontwikkeld door DracoBlue, van het SA-MP forum.
Vroeger (en nu nog altijd) werd er heel veel gebruik gemaakt van de strtok functie. Die werd al standaard meegeleverd met het lvdm script dat bij de server bestanden zit.
Echter, deze methode is TRAAG en INGEWIKKELD in vergelijking met dcmd.
Hoe werkt het?
Simpel gezegd, definiëer je eerst wat dcmd is door een #define toe te voegen bovenaan, daarna kan je het gewoon gebruiken.
Geen geknoei meer met strtok, etc. Immers, alles wat nog achter een commando wordt ingetypt, wordt AUTOMATISCH opgeslagen in de variabele params.
Tutorial
dcmd definiëren
Plak deze regel bovenaan bij je defines (zorg dat het allemaal op 1 regel staat, anders werkt het niet):
Dan zijn we klaar voor dit deel.
Voor de duidelijkheid: Hier hoef je dus niets van te snappen of aan te veranderen.
Commando's maken
Hoe maak je nu de commando's?
Wel, het is heel makkelijk om bestaande commando's om te zetten in dcmd formaat. Laat ik een voorbeeld nemen:
In dcmd wordt dit:
Zoals je ziet staat het eigenlijke commando nu BUITEN de callback OnPlayerCommandText. Dit betekent dat je al je commands nu ook in een apart bestand kan zetten (daar ben ik nog niet achter, helaas). Zo heb je niet zo'n hele hoop code hebt in je gamemode.
Even de uitleg erbij:
Simpel gezegd zet je dus dcmd neer, open het haakje, zet je commando neer zonder de '/', zet daarachter de lengte van het commando (opnieuw zonder de slash), gevolgd door cmdtext, het afsluitende haakje en de puntkomma.
Nu vraag je je zeker af: Hoe werken die params dan?
Als je maar 1 parameter (meestal het playerid) nodig hebt, kun je zoiets maken:
Dit is dus dcmd, als je dit gesnapt hebt, kun je verder gaan met de rest van de tutorial. Zoniet, probeer wat uit tot je het snapt, of vraag het hier.
Laatst geüpdate:
Bewerkt: door Big Boss