Beiträge von malE
-
-
-
Dann stimmt anscheint der Pfad nicht. Kopiere den Pfad der "SAMP.ahk", mit einem Rechtsklick auf die Datei -> Eigenschaften -> Ort.
-
A_MyDocuments
-
Leider bringt die Variante den Compiler zum crashen.
Kann eigentlich nicht sein, bei mir funktioniert es problemlos. Genauso wie folgender Code problemlos bei mir läuft.
#define TEAM_NAME_1 "Cops"new const Float:MoneySpawns[][7]={
{-2335.7568,-2340.2905,-2023.9417,-2027.9861,270.0450,269.2450},//Violet
{-2279.4812,-2283.4812,-1286.3794,-1294.3794,258.9622,258.3622},//Yellow
{-2810.7144,-2819.3496,-1493.0504,-1495.6464,139.3078,138.9078},//Brown
{-2303.8931,-2337.4104,-1607.2054,-1644.9517,483.7031,482.9031}//Main
};main()
{
print(TEAM_NAME_1);
printf("%s", TEAM_NAME_1);
for(new i=0; i < sizeof(MoneySpawns); i++) printf("[X: %0.2f, Y: %0.2f, Z: %0.2f] [X: %0.2f, Y: %0.2f, Z: %0.2f]", MoneySpawns[i][0], MoneySpawns[i][1], MoneySpawns[i][2], MoneySpawns[i][3], MoneySpawns[i][4], MoneySpawns[i][5]);
} -
Du hast die Anführungszeichen vergessen.
#define TEAM_NAME_1 "Cops"
main()
{
print(TEAM_NAME_1);
printf("%s", TEAM_NAME_1);
} -
Versuch mal die "0" mit einem "false" zu ersetzen.
-
-
Das Mindestalter für das Kaufen und Verkaufen von Ware ist doch sowieso erst ab 18 erlaubt bei Ebay, oder nicht?
keine sorge ich bzw. wir sind schon volljährig. wollte nur fragen ob jemand weiß wie man artikel mit fsk 18 verkauft
-
-
Der Code ist auf jeden Fall noch verbesserungswürdig!
Wenn du sscanf benutzt solltest du immer string Parameter als letzten Parameter vorgeben, da ansonsten nach einem Leerzeichen, ungewollt der nächste Parameter aufgerufen wird.
Außerdem habe ich noch drei Abfragen hinzugefügt und die Länge deines strings auf 144 Zeichen erweitert, da SendClientMessage() max. 144 Zeichen ausgeben kann.
Bei einer Abfrage (ist markiert) musst du die Variable auf die Variable umändern, welche den Admin Rang des Spieler speichert.
ocmd:tban(playerid,params[])
{
if(!IsPlayerGM(playerid,2))return 1;
new pID,string[144],Grund[64],Dauer;
if(sscanf(params, "uis", pID,Dauer,Grund))return SendClientMessage(playerid, FARBE_ROT, "INFO: /tban [PlayerId] [Dauer (in Minuten)] [Grund]");
if(pID == INVALID_PLAYER_ID)return SendClientMessage(playerid,FARBE_ROT,"Diese Spieler (ID) existiert nicht.");
if(pID == playerid)return SendClientMessage(playerid,FARBE_ROT,"Du kannst dich nicht selber Bannen!");
if(admin(playerid) <= admin(pID))return SendClientMessage(playerid, FARBE_ROT, "Du kannst keinen ranghöheren oder gleichrangigen Admin bannen!"); // variablen unbedingt ändern
if(Dauer <= 0)return SendClientMessage(playerid, FARBE_ROT, "Ungültige Dauer!");
if(!strlen(Grund) || strlen(Grund) > sizeof(Grund))return SendClientMessage(playerid, FARBE_ROT, "Ungültiger Grund!");
format(string,sizeof(string),"INFO: %s wurde von %s %s für %d Minuten gebannt.Grund: %s",getPlayerName(pID),GetGMRang(playerid),getPlayerName(playerid),Dauer,Grund);
SendClientMessageToAll(FARBE_ROT,string);
TBan(pID,Grund,Dauer,playerid);
return 1;
} -
Du kannst nicht überall die geschweiften Klammern ("{}") benutzen.
ocmd:aduty(playerid,params[])
{
if(!IsPlayerGM(playerid,1)) return 1;
if(!AdmOnDuty[playerid])
{
new string[128];
format(string,sizeof(string),"* %s ist nun als %s im Dienst! *",getPlayerName(playerid),GetGMRang(playerid));
SendClientMessageToAll(FARBE_BLAU,string);
SetPlayerColor(playerid, FARBE_ROT);
AdmOnDuty[playerid]=true;
CMDLog(string);
}
return 1;
} -
@Aaron1337 die Funktion ist so korrekt, diese vor allem so zu überprüfen ist unnötig.
@xPatrick zeig mir mal bitte wie und wo du die Funktion aufrufst.
-
GetGMRang(playerid)
{
new string[36];
switch(sInfo[playerid][Adminlevel]) {
case 1: string = "[GS]Gamesage";
case 2: string = "[GM]Gamemaster";
case 3: string = "[ADM]Admin";
}
return string;
} -
Kann ich folgenden Code eventuell effizienter oder besser schreiben, vorallem wegen der Kontrollstrukturen?
Ich moechte weiterhin folgendes umsetzen:
Ich will nicht dass ein Spieler das eigene "Bett" mit /blowup zerstoert.
Also will ich irgendwie ausschliessen dass der beispielsweise bedstateviolet auf -1 setzen kann wenn er selbst gPlayerTeamSelection[playerid] == TEAM_VIOLET ist.
Daher habe ich irgendwie das gefuehl dass ich alles umbauen muss, vielleicht hat jemand einen VorschlagC
Alles anzeigenif(strcmp(cmdtext, "/blowup", true) == 0) { for(new i = 0; i < sizeof(beds[]); i++) { new Float:health; GetPlayerHealth(playerid,health); if(running !=1 && IsPlayerInRangeOfPoint(playerid,10.0,beds[i][0],beds[i][1],beds[i][2]) && health != 0 && !IsPlayerInAnyVehicle(playerid)) // In this script we deal with players only { running = 1; if(i == 0 && bedstateviolet !=-1 && gPlayerTeamSelection[playerid] != TEAM_VIOLET) { bedstateviolet=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team {610D96}VIOLET"); } if(i == 1 && bedstateblue !=-1 && gPlayerTeamSelection[playerid] != TEAM_BROWN) { bedstateblue=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team {8B4513}BROWN"); } if(i == 2 && bedstateyellow !=-1 && gPlayerTeamSelection[playerid] != TEAM_YELLOW) { bedstateyellow=-1; SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are blowing up the bed of Team {FFFF00}YELLOW"); } if((i == 0 && bedstateviolet !=-1 && gPlayerTeamSelection[playerid] != TEAM_VIOLET) || (i == 1 && bedstateblue !=-1 && gPlayerTeamSelection[playerid] != TEAM_BROWN) || (i == 2 && bedstateyellow !=-1 && gPlayerTeamSelection[playerid] != TEAM_YELLOW)) { SendClientMessage(playerid, COLOR_WHITE, "SERVER: Planted Bomb Successfully. Lets Blow This Bed Up!"); SetPlayerScore(playerid, GetPlayerScore(playerid) + 1); SendClientMessage(playerid, COLOR_WHITE, "SERVER: Keep Running! Bed Will Blow Up In 5 seconds!"); GetPlayerPos(playerid, x1, y1, z1); ApplyAnimation(playerid, "BOMBER", "BOM_Plant_Loop", 4.0, 1, 0, 0, 1, 1); for(new k = 0; k < MAX_PLAYERS; k++) { PlayerPlaySound(k,7416,x1,y1,z1); } SetTimer("BlowUpThisBed", bombtimer, false); CountDownTimer = SetTimer("CountDown", 1000, true); new Float:dist = GetDistance(beds[i][0],beds[i][1],beds[i][2],x1,y1,z1); printf("Distance to closest bed: %f, Index: %d", dist, i); } else { return 0; } return 1; } } return 0; }
Wenn jemand noch Zeit hat, auch folgenden Befehl
Ich kann dir nicht sagen, ob es funktioniert, da ich es logischerweise nicht testen kann.
new bedstate[3] = {-1,...}; // violet (0), blue / brown (1), yellow (2)if(strcmp(cmdtext, "/blowup", true) == 0)
{
for(new i = 0; i < sizeof(beds[]); i++)
{
new Float:health;
GetPlayerHealth(playerid,health);if(running !=1 && IsPlayerInRangeOfPoint(playerid,10.0,beds[i][0],beds[i][1],beds[i][2]) && health != 0 && !IsPlayerInAnyVehicle(playerid)) // In this script we deal with players only
{
running = 1;if(bedstate[i] != -1 && gPlayerTeamSelection[playerid] != i)
{
new stringTeam[68], string[145];
bedstate[i] = -1;
switch(gPlayerTeamSelection[playerid])
{
case 0: stringTeam = "{610D96}VIOLET";
case 1: stringTeam = "{8B4513}BROWN";
case 2: stringTeam = "{FFFF00}YELLOW";
}
format(string, sizeof(string), "SERVER: You are blowing up the bed of Team {610D96}%s!", stringTeam);
SendClientMessage(playerid, COLOR_WHITE, string);
SendClientMessage(playerid, COLOR_WHITE, "SERVER: Planted Bomb Successfully. Lets Blow This Bed Up!");
SetPlayerScore(playerid, GetPlayerScore(playerid) + 1);
SendClientMessage(playerid, COLOR_WHITE, "SERVER: Keep Running! Bed Will Blow Up In 5 seconds!");
GetPlayerPos(playerid, x1, y1, z1);
ApplyAnimation(playerid, "BOMBER", "BOM_Plant_Loop", 4.0, 1, 0, 0, 1, 1);
for(new k = 0; k < MAX_PLAYERS; k++)
{
PlayerPlaySound(k,7416,x1,y1,z1);
}
SetTimer("BlowUpThisBed", bombtimer, false);
CountDownTimer = SetTimer("CountDown", 1000, true);
new Float:dist = GetDistance(beds[i][0],beds[i][1],beds[i][2],x1,y1,z1);
printf("Distance to closest bed: %f, Index: %d", dist, i);
break;
}
else if(gPlayerTeamSelection[playerid] == i)
{
SendClientMessage(playerid, COLOR_WHITE, "SERVER: You can`t blow up your own bed.");
}
}
}
return 1;
}
Du musst allerdings die Variable gPlayerTeamSelection[] umdeklarieren. -
format(nPlate, sizeof(nPlate), "%s%s %d", toupper(playerName[0]), toupper(playerName[1]), PrivateVehicle[playerid][slot][vehID]);
zu
format(nPlate, sizeof(nPlate), "%c%c %d", toupper(playerName[0]), toupper(playerName[1]), PrivateVehicle[playerid][slot][vehID]); -
Du brauchst dafür Visual Studio und die Programmiersprachen für GTA:N sind C# bzw. CSharp (Server Side) und JS bzw. JavaScript (Client Side).
-
Hey Leute,
Welchen Befehl brauch ich um ein einfachen /do zu machen?
Also das Wenn man den Motor startet, Automatisch für alle spieler im Fahrzeug oder in direkter nähe eine Nachricht bekommen z.B. PLAYER X dreht am Zündschloss und startet den Motor.
SendClientMessageToAll ? Mit Radius?
Würde der Befehl so stimmen Bis jetzt?
ocmd:motor(playerid,params[]){SetTimerEx("Motorstarten",1000,false,"i",playerid);}public Motorstarten(playerid){if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return 1;new vID=GetPlayerVehicleID(playerid),tmp_motor,tmp_licht,tmp_alarm,tmp_tuer,tmp_mhaube,tmp_kraum,tmp_objective;if(!HatVehEinMotor(GetVehicleModel(vID)))return 1;GetVehicleParamsEx(vID,tmp_motor,tmp_licht,tmp_alarm,tmp_tuer,tmp_mhaube,tmp_kraum,tmp_objective);if(tmp_motor==1){tmp_motor =0;format(string,sizeof(string), "((%s: stoppt den Motor und zieht die Handbremse an.))", getPlayerName(playerid;for(new i=0; i<MAX_PLAYERS; i++){SendClientMessage(i, FARBE_FUNK, string);}}else{tmp_motor=1;format(string,sizeof(string), "((%s: dreht den Zündschlüssel um und startet den Motor.))", getPlayerName(playerid;for(new i=0; i<MAX_PLAYERS; i++){SendClientMessage(i, FARBE_FUNK, string);}}SetVehicleParamsEx(vID,tmp_motor,tmp_licht,tmp_alarm,tmp_tuer,tmp_mhaube,tmp_kraum,tmp_objective);return 1;}
Es macht mehr Sinn eine Funktion dafür zu erstellen, zumal dadurch auch viele unnötige Zeilen gespart werden.
Außerdem hatte dein Code eins zwei Fehler, die ich zusätzlich behoben habe.
ocmd:motor(playerid,params[])
{
SetTimerEx("Motorstarten",1000,false,"i",playerid);
return 1;
}public Motorstarten(playerid)
{
if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return 1;
new vID=GetPlayerVehicleID(playerid);
if(!HatVehEinMotor(GetVehicleModel(vID)))return 1;
new tmp_motor,tmp_licht,tmp_alarm,tmp_tuer,tmp_mhaube,tmp_kraum,tmp_objective;
GetVehicleParamsEx(vID,tmp_motor,tmp_licht,tmp_alarm,tmp_tuer,tmp_mhaube,tmp_kraum,tmp_objective);
if(tmp_motor==1)
{
tmp_motor =0;
format(string,sizeof(string), "((%s: stoppt den Motor und zieht die Handbremse an.))", getPlayerName(playerid));
SendClientMessageInRangeOfPoint(playerid, FARBE_FUNK, string, 15.0);
}
else
{
tmp_motor=1;
format(string,sizeof(string), "((%s: dreht den Zündschlüssel um und startet den Motor.))", getPlayerName(playerid));
SendClientMessageInRangeOfPoint(playerid, FARBE_FUNK, string, 15.0);
}
SetVehicleParamsEx(vID,tmp_motor,tmp_licht,tmp_alarm,tmp_tuer,tmp_mhaube,tmp_kraum,tmp_objective);
return 1;
}stock SendClientMessageInRangeOfPoint(playerid, color, msg[], Float:range)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++) {
if(!IsPlayerConnected(i)) continue;
if(!IsPlayerInRangeOfPoint(i, range, X, Y, Z)) continue;
SendClientMessage(i, color, msg);
}
return 1;
} -
So?
if(strcmp(cmd, "/fill", true) == 0)
{
new veh = GetPlayerVehicleID(playerid);
tmp = strtok(cmdtext, idx);
if(IsAtGasStation(playerid))
{
if(!strlen(tmp)) {
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,COLOR_YELLOW, "Du bist in Keinem Fahrzeug:");
if(IsANoTachoVehicle(veh))return SendClientMessage(playerid,COLOR_YELLOW," Ein Fahrrad hat doch keinen Tank.");for(new i = 0; i < sizeof(TankstellenInfo); i ++)
{
if(IsPlayerInRangeOfPoint(playerid,10.0, TankstellenInfo[i][tsEntranceX], TankstellenInfo[i][tsEntranceY], TankstellenInfo[i][tsEntranceZ]))
{
if(GetPlayerMoney(playerid) < TankstellenInfo[i][tsEntranceCost])return GameTextForPlayer(playerid, "~r~Du hast nicht genug Geld", 5000, 1);
{
if(PlayerInfo[playerid][pPtankkey] != 0)
{
if(TankstellenInfo[i][tsLocked] == 1)return SendClientMessage(playerid,COLOR_RED, "Die Tanke hat geschlossen");
if(TankstellenInfo[i][tsProducts] == 5000)return SendClientMessage(playerid,COLOR_RED, "Die Tankstelle hat kein Benzin mehr");
if(Refueling[playerid] == 1)return SendClientMessage(playerid, COLOR_RED, "Du bist gerade am tanken...");Refueling[playerid] = 1;
FreezePlayer(playerid);
SetTimerEx("Fillup",RefuelWait,0, "ii", playerid, i);
SendClientMessage(playerid,COLOR_WHITE," Dein Fahrzeug wird betankt, Bitte warten....");
}
}
}
}
}
}
else if(IsPlayerInRangeOfPoint(playerid,90.0, 78.8584, -291.3175, 1.5781))
{
new tmpcar = GetPlayerVehicleID(playerid);
new compcost2 = 50;
if(PlayerInfo[playerid][pJob] != 22)return SendClientMessage(playerid, COLOR_WHITE, "Du bist kein Trucker");
if(!strlen(tmp))return SendClientMessage(playerid, COLOR_GRAD1, "FEHLER: /fill [Menge]");new vehicleid = GetPlayerVehicleID(playerid);
if(!IsATruck2(tmpcar))return SendClientMessage(playerid, TEAM_GROVE_COLOR, "Dieses Fahrzeug kann keine Benzin ausliefern.");
if(!IsTrailerAttachedToVehicle(vehicleid))return SendClientMessage(playerid, COLOR_RED, "Du hast keinen Anhänger dran");new typ=GetPlayerHaul(tmpcar);
if(PlayerHaul2[typ][pLoad2] < PlayerHaul2[typ][pCapasity2])
{
new amount;
amount = strval(tmp);
if(amount < 1 || amount > 1500)return SendClientMessage(playerid, COLOR_GREY, " Die Menge muss zwischen 1 und 1500 sein !");new check= PlayerHaul2[typ][pLoad2] + amount;
if(check > PlayerHaul2[typ][pCapasity2])
{
format(string, sizeof(string), " Du hast das Limit mit %d Benzin erreicht, Benzin: %d.",PlayerHaul2[typ][pCapasity2],PlayerHaul2[typ][pLoad2]);
return SendClientMessage(playerid, COLOR_GREY, string);
}
new cost = amount*compcost2;
if(GetPlayerMoney(playerid) >= cost)
{
PlayerHaul2[typ][pLoad2] += amount;
format(string, sizeof(string), "Benzin: %d/%d.", PlayerHaul2[typ][pLoad2],PlayerHaul2[typ][pCapasity2]);
SendClientMessage(playerid, TEAM_GROVE_COLOR, string);
format(string, sizeof(string), "Du hast %d Benzin für $%d gekauft.", amount,cost);
SendClientMessage(playerid, TEAM_GROVE_COLOR, string);
GivePlayerMoney(playerid,-cost);
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
return 1;
}
else
{
format(string, sizeof(string), "Du kannst nicht %d Benzin für $%d anfordern!", amount,cost);
return 1SendClientMessage(playerid, TEAM_GROVE_COLOR, string);
}
}
else
{
format(string, sizeof(string), "Benzin: %d/%d.", PlayerHaul2[typ][pLoad2],PlayerHaul2[typ][pCapasity2]);
return SendClientMessage(playerid, TEAM_GROVE_COLOR, string);
}
}
else
{
return SendClientMessage(playerid, COLOR_YELLOW,"Du bist an keiner Tankstelle!");
}
return 1;
} -
new gOOC[MAX_PLAYERS] = 1;