DMA so hab ich's auch nur mit anderen Variablen xD
Nützliche Codeschnipsel
- breadfish
- Geschlossen
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Der Text wird gespiegelt, ich und Blaggi spielen im Moment mit dem Index einer Zeichenkette
Hier meine selbsterstelle "strlen" Funktion:
stock strlenght(const string[])
{
new index = 500;
new space;
while(index > 0)
{
if(string[index] == "")
{
space++;
}
index--;
}
new lenght = 500 - space;
return length;
}Ich weiss nicht genau ob sie funktioniert, aber dürfte
Das heisst "length" -.-"
-
Length war schon immer schwer zu schreiben
-
Hab hier ne Funktion gemacht womit man den höchtsten beziehungsweise den kleinsten von einer
bestimmten Zahlen kette Rausfinden kannFunktion:
forward BestValue(valpack[],size);
public BestValue(valpack[],size){
new DeLaSizA = size;
new retval;
for(new i = 0;i<DeLaSizA;i++){
for(new valz = i;valz<DeLaSizA;valz++){
if(valz!=i){
if(valpack[i] > valpack[valz]){retval = valpack[i];}}}}
return retval;}In dem fall wird die höchste Rausgefunden, für die kleinste einfach das Größer / Kleiner Zeichen ändern in <
BeiSpiel:
new ZahlenPaket[5];
ZahlenPaket[0] = 3;
ZahlenPaket[1] = 1;
ZahlenPaket[2] = 5;printf("Höchste Zahl ist %d",BestValue(ZahlenPaket,5);
// Also erst das Paket mit den Zahlen halt dann die Größe des PaketsHave Fun
FoX
-
Min/Max Funktionen lassen größen.
-
Spieler in einem bestimmten gebiet checken, nen bissl schneller als der Standard
#define InArea(%1,%2,%3,%4,%5,%6)\
((%1) < (%3)) && ((%1) > (%4)) && ((%2) < (%5)) && ((%2) > (%6))Nutzung:
new Float:spieler_x,Float:spieler_y,Float:spieler_z;
GetPlayerPos(playerid,spieler_x,spieler_y,spieler_z);
if(InArea(spieler_x,spieler_y,maximalX,minimalX,maximalY,minimalY);Ich hoffe es ist nach eurem geschmack xD
-
Mag zwar schneller sein, macht das Script aber um eniges größer.
Bzw. wenn die Function im Cache liegt, kann es sein das die Funktion schneller ist. ;x -
naja hauptsache es Funktioniert, und erfüllt seine Aufgaben
-
Ich will bei /su beim GF mod einstellen das man im Radius von 150 Meter nur einem Wanted geben kann, wie und was muss ich einfügen damit man nur einem Wanted geben kann der innerhalb von den 150 Meter ist
-
nutz da besser PlayerToPoint , das ist schon im GF enthalten soweit ich weiss,
wenn du es extra haben willst stell ich hier Später noch nen Macro rein -
-
Joa wäre dir sehr dankbar wen du nen beispiel ma hier einfügen würdest
-
Sry wegen doppelpost....
Muss ich vlt. das hier im /su befehl irgendwo einfügen
if (ProxDetectorS(100.0, playerid, giveplayerid))so sieht der /su befehl aus
if(strcmp(cmd, "/suspect", true) == 0 || strcmp(cmd, "/su", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pMember] == 12)
{
SendClientMessage(playerid, COLOR_GREY, " You are not on Duty!");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "USAGE: (/su)spect [playerid/PartOfName] [crime discription]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if (gTeam[playerid] == 2 || IsACop(playerid))
{
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if (gTeam[giveplayerid] != 2)
{
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: (/su)spect [playerid/PartOfName] [crime text]");
return 1;
}
if(WantedPoints[giveplayerid] == 0) { WantedPoints[giveplayerid] = 3; }
else { WantedPoints[giveplayerid]+= 2; }
SetPlayerCriminal(giveplayerid,playerid, result);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GRAD2, " You can't suspect a Cop !");
}
}
}
else
{
format(string, sizeof(string), " %d is not an active player.", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD2, " You are not a Cop / FBI / National Guard !");
}
}
return 1;
}Wäre dem jenigen sehr danbar wen er den eine befehl dort rein scripten könnte...thx schonmal im vorraus
-
Mal ein simples Beispiel zum Adden des Commands /unprison, um Leute aus dem FDM zu holen.^^
if(strcmp(cmd, "/unprison",true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] < 2 // Admin Level definieren)
{
SendClientMessage(playerid, COLOR_GREY, " you are not authorized to use this command !");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /unprison [playerid/PartOfName]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* You released %s from Fort DeMorgan.", giveplayer);
SendClientMessage(playerid, COLOR_LIGHTRED, string);
format(string, sizeof(string), "* You were released from Fort DeMorgan by Admin %s.", sendername);
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
PlayerInfo[giveplayerid][pJailed] = 0;
PlayerInfo[giveplayerid][pJailTime] = 0;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " That player is Offline !");
return 1;
}
}
return 1;
} -
if(PlayerInfo[playerid][pAdmin] < 2 // Admin Level definieren)
ERROR "//" tut die ganze Zeile dahinter Kommentieren, also Klammer hinter die 2 -
#define SET_THE_SPAWN_MONEY 1000
public OnPlayerStateChange(playerid, newstate, oldstate)
{
switch(newstate)
{
case 8:
{
if(GetPlayerMoney(playerid) < SET_THE_SPAWN_MONEY) SetPlayerMoney(playerid, SET_THE_SPAWN_MONEY);
}
}
return 1;
} -
Hier mal ein /Jailtime in Minuten-Script
if(strcmp(cmd, "/jailtime", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pJailed] >= 1)
{
new chat[128];
new mini;
mini = PlayerInfo[playerid][pJailTime]/60;
format(chat, sizeof(chat), "Du bist für %d Minuten im Gefängnis.", mini);
SendClientMessage(playerid, COLOR_LIGHTBLUE, chat);
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Du bist nicht im Gefängnis!");
}
}
return 1;
} -
if(GetPlayerMoney(playerid) < SET_THE_SPAWN_MONEY) SetPlayerMoney(playerid, SET_THE_SPAWN_MONEY);
Nicht jeder hat SetPlayerMoney ^^, aber gute Idee! -
Eine Funktion, die den gerundeten Durchschnittsping zurückgibt
Wers brauch, viel Spaß
stock GetDurchschnittPing()
{
new allpings = 0;
new allplayers = 0;
for(new i=0; i<GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
allpings += GetPlayerPing(i);
allplayers += 1;
}
}
return floatround(allpings/allplayers);
}Falls schlechte Einrückung ==>breadfish.de/wcf/attachment/579/
repeat(times);
#define repeat(%1) for(new r=0; r<%1; r++)
Beispiel:
repeat(10)
{
print("Own3d by Me");
print("---------------");
}Ist eben was für Schreibfaule
-
Easy Language
Ein nützlicher Code um einfache Multilanguage Server aufzubauen. Kein nerviges Abfragen. Wenig Code, viel Wirkung:
Zuerst mal das hier nach ganz oben ins Script:
new langp = 0;Danach das hier nach ganz unten:
stock sLangMsg(playerid, color, langmsg1[], langmsg2[])
{
if(langp == 1)
{
SendClientMessage(playerid, color, langmsg1);
}
else if(langp == 2)
{
SendClientMessage(playerid, color, langmsg2);
}
}Wenn ihr jetzt die Sprache des Users einstellen wollt, setzt diese beiden Commands unter das Callback "OnPlayerCommandText":
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/lang1",cmdtext,true) == 0)
{
langp = 1;
return 1;
}
if(strcmp("/lang2",cmdtext,true) == 0)
{
langp = 2;
return 1;
}
return 0;
}Um jetzt die langMsg anzuwenden könnt ihr zum Beispiel so etwas unter "OnPlayerSpawn" setzen:
public OnPlayerSpawn(playerid)
{
sLangMsg(playerid, 0xFF0000FF, "Du bist gespawnt.", "You have spawned.");
return 1;
}Funktioniert bei mir bestens.
Viel Spaß beim Script erstellen.
-
stock GetMoneyFormat(value){
new ffx2[128];
if(value < 10 && value > 0){
format(ffx2,sizeof(ffx2),"00000000%d",value);
return ffx2;}
else if(value < 100 && value > 9){
format(ffx2,sizeof(ffx2),"0000000%d",value);
return ffx2;}
else if(value < 1000 && value > 99){
format(ffx2,sizeof(ffx2),"000000%d",value);
return ffx2;}
else if(value < 10000 && value > 999){
format(ffx2,sizeof(ffx2),"00000%d",value);
return ffx2;}
else if(value < 100000 && value > 9999){
format(ffx2,sizeof(ffx2),"0000%d",value);
return ffx2;}
else if(value < 1000000 && value > 99999){
format(ffx2,sizeof(ffx2),"000%d",value);
return ffx2;}
else if(value < 10000000 && value > 999999){
format(ffx2,sizeof(ffx2),"00%d",value);
return ffx2;}
else if(value < 100000000 && value > 9999999){
format(ffx2,sizeof(ffx2),"0%d",value);
return ffx2;}
else if(value < 1000000000 && value > 99999999){
format(ffx2,sizeof(ffx2),"%d",value);
return ffx2;}
format(ffx2,sizeof(ffx2),"%d",value);
return ffx2;}Hab aus langweile mal eben das gemacht, damit kann man wenn man eine Zahl hat, die Zahl in einen Geldformat Formatieren und Zurückgeben:
Beispiel : Meine Zahl is 9000
Ich möchste sie nun in den Geld format formatieren mit den nullen vorne drann:
$0000009000
Have Fun :>