Was soll da bitte auch geladen werden?
Du gehst bisher nur in die Tabelle cars mehr machst du in dem Code nicht.
mfg Kavkus
Was soll da bitte auch geladen werden?
Du gehst bisher nur in die Tabelle cars mehr machst du in dem Code nicht.
mfg Kavkus
benutz
SendRconCommand("changemode tdm1");
anstatt
SendRconCommand("loadgamemode tdm1");
Wie schon bereits gesagt, schau dir sscanf an da ist es leichter.
Und da kann ich nur sagen bei deinen Fehlern, schau dir andere Themen an denn die werden immer wieder gemacht die fehler.
mfg Kavku
Probiers doch mal am besten selbst.
Erst probieren und dann wenn was nicht klappt mit dem vorhandenen Code ankommen.
Learning by Doing heist es so schön.
mfg Kavkus
sonic nicht so vorlaut bitte, und dein Post hat nichts mit dem Thema zu tun.
@ Airwolf Ich würde dir raten das sscanf tutorial anzuschauen da es damit viel einfacher ist.
P.S Ich stelle dir mein dcmd veh befehl mal zur verfügung.
Dafür benötigst du aber auch sscanf
dcmd_veh(playerid, params[])
{
new vehmodel,color1,color2;
new Float:X,Float:Y,Float:Z,Float:A;
if(sscanf(params,"ddd",vehmodel,color1,color2)) return SendClientMessage(playerid,COLOR_GREY,"Benutze: /veh [ModelID] [color1] [color2]");
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,A);
CreateVehicle(vehmodel,X,Y,Z,A,color1,color2,-1);
return 1;
}
Fehler kann ich darin nun nicht sehen.
Normalerweise müsste es so funktionieren.
mfg Kavkus
Schau doch mal in dem Tutorial Bereich da gibts n Thema mit dem Namen "Fraktionen mit gTeams erstellen"
Das könnte dir bei diesem Problem sehr hilfreich sein. Wenn trotzdem probleme da sind helfen wir bestimmt gerne.
mfg Kavkus
mach aus dem %f einfach ein %.0f dann steht dort die Zahl ohne ,
mfg Kavkus
Wenn du sie natürlich zu klein machst, dann kann auch nicht alles angezeigt werden.
Habe mir auch deine Variante mal angeschaut und finde sie eher zu kompliziert aufgebaut.
mit dem "usz". Das z versteh ich zwar bis jetzt noch nicht, aber hauptsache es geht.
mfg Kavkus
Bittesehr:
#include <a_samp>
#include "../include/gl_common.inc"
#define ADMINFS_MESSAGE_COLOR 0xFF444499
#define PM_INCOMING_COLOR 0xFFFF22AA
#define PM_OUTGOING_COLOR 0xFFCC2299
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
new tmp[256];
new Message[256];
new gMessage[256];
new pName[MAX_PLAYER_NAME];
new iName[MAX_PLAYER_NAME];
new idx;
public OnFilterScriptInit()
{
print("Rcon befehle");
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(pm,2,cmdtext);
dcmd(ban,3,cmdtext);
dcmd(kick,4,cmdtext);
return 1;
}
dcmd_pm(playerid,cmdtext[])
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5)
{
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Benutze: /pm (id) (message)");
return 1;
}
new id = strval(tmp);
gMessage = strrest(cmdtext,idx);
if(!strlen(gMessage))
{
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Benutze: /pm (id) (message)");
return 1;
}
if(!IsPlayerConnected(id))
{
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/pm : Spieler ID");
return 1;
}
if(playerid != id)
{
GetPlayerName(id,iName,sizeof(iName));
GetPlayerName(playerid,pName,sizeof(pName));
format(Message,sizeof(Message),">> %s(%d): %s",iName,id,gMessage);
SendClientMessage(playerid,PM_OUTGOING_COLOR,Message);
format(Message,sizeof(Message),"** %s(%d): %s",pName,playerid,gMessage);
SendClientMessage(id,PM_INCOMING_COLOR,Message);
PlayerPlaySound(id,1085,0.0,0.0,0.0);
printf("PM: %s",Message);
}
else
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Du kannst dir nicht selbst eine pn schrieben.");
return 1;
}
dcmd_kick(playerid,cmdtext[])
{
if(IsPlayerAdmin(playerid))
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5)
{
return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Benutze: /kick (id) [reason]");
}
new id = strval(tmp);
if(!IsPlayerConnected(id))
{
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/kick : Böse spieler ID");
return 1;
}
gMessage = strrest(cmdtext,idx);
GetPlayerName(id,iName,sizeof(iName));
SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"-- Du hast ihn vom server gekickt.");
if(strlen(gMessage) > 0)
{
format(Message,sizeof(Message),"Reason: %s",gMessage);
SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
}
format(Message,sizeof(Message),">> %s(%d) hast ihn gekickt.",iName,id);
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);
Kick(id);
return 1;
}
else
{
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/kick : Du bist kein admin");
return 1;
}
}
dcmd_ban(playerid,cmdtext[])
{
if(IsPlayerAdmin(playerid))
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5)
return SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Benutze: /ban (id) [reason]");
new id = strval(tmp);
if(!IsPlayerConnected(id))
{
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/ban : Böse spieler ID");
return 1;
}
gMessage = strrest(cmdtext,idx);
GetPlayerName(id,iName,sizeof(iName));
SendClientMessage(id,ADMINFS_MESSAGE_COLOR,"-- Du hast ihn vom server gebannt.");
if(strlen(gMessage) > 0)
{
format(Message,sizeof(Message),"Reason: %s",gMessage);
SendClientMessage(id,ADMINFS_MESSAGE_COLOR,Message);
}
format(Message,sizeof(Message),">> %s(%d) hat ihn gebannt.",iName,id);
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,Message);
Ban(id);
return 1;
}
else
{
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/ban : Du bist kein admin");
return 1;
}
}
Ein Tipp von mir, lernt das einrücken das hilft euch bei den Klammern.
Airwolf schau dir im Tutorialbereich mal das Thema "Commands mit Parametern" an.
Ist sehr ausführlich von Goldkiller beschrieben.
mfg Kavkus
Mach einen Timer in diesem du die GangZone für alle unsichtbar machst,
danach lässt du die GangZone wieder einblenden wo du die Farbe wieder änderst.
Dann musst du aber eine Value entweder auf 0 oder 1 machen den du im Timer überprüfst.
Da du ja Health als ein Float erstellst,
musst du auch %f=float in deinem Script verwenden.
Nun wird dir die jetzige HP angezeigt.
Aber ein Tipp mach den String kleiner, 52 schickt dort vollkommen.
Dein random bewirkt inmoment das dein Aktueller Count +1 gerechnet wird und daraus eine Zahl ausgesucht werden.
Ist das richtig?
Weil der Count wird ja schon hochgesetzt sobald ein neuer Spieler aufm Server ist.
Ein Tipp Airwolf,
wenn du im dcmd noch sscanf verwendest, ist dies viel einfach als mit deinem jetzigen befehl
Als allererstes überprüft er ob der Spieler in der Fraktion 5 ist, ist das nicht der Fall überprüft er ob der Spieler Leader der Fraktion 5 ist.
Wenn er beides nicht ist bekommt er den Text.
Und ich garantiere dir das meins richtig ist. Denn Falsch kann es nicht sein da ich ein paar solcher abfragen in meinem Script habe die alle Funktionieren.
mfg Kavkus
Hier müsste so gehen.
dcmd_sell(playerid,params[])
{
new ID,auswahl;
if(sscanf(params, "ud",ID,auswahl))return SendClientMessage(playerid,COLOR_GRAD2,"Nutze: /sell [spielerid][item]");
if(PlayerInfo[playerid][pMember] == 5 || PlayerInfo[playerid][pLeader] == 5)
{
if(auswahl == 1)
{
new GSpieler[MAX_PLAYER_NAME],PSpieler[MAX_PLAYER_NAME],sstring[128],pstring[128];
GetPlayerName(ID,GSpieler,sizeof(GSpieler));
GetPlayerName(playerid,PSpieler,sizeof(PSpieler));
format(pstring,sizeof(pstring),"Nostra Döner Mitarbeiter %s, hat dir eine Pizza überreicht.",PSpieler);
SendClientMessage(ID,COLOR_YELLOW,pstring);
format(sstring,sizeof(sstring),"Du hast dem Kunden %s eine Pizza überreicht.",GSpieler);
SendClientMessage(playerid, COLOR_WHITE,sstring);
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "|__________________ Nostra Döner__________________|");
SendClientMessage(playerid, COLOR_WHITE, "Nutze: /sell [spielerid][item]");
SendClientMessage(playerid, COLOR_GREY, "Verfügbare Waren: Pizza");
SendClientMessage(playerid, COLOR_WHITE, "|________________________________________________|");
}
}
else
SendClientMessage(playerid, COLOR_GRAD2,"Du bist kein Nostra Döner Mittarbeiter");
return 1;
}
P.S Ich würde von dir aus mal die Strings kleiner machen Sonst ist dein Resourcenverbrauch zu hoch.
mfg Kavkus
Sry aber von meiner Ansicht finde ich meins Kongretter.
Zumindest habe ich es besser erklärt und habe die besser Lösung gepostet.
Klar es gehen beide Methoden. Aber für Anfänger mit GF ist meine die einfachere.
Schau mal,
anscheind hast du was übersehen.
if(PlayerInfo[playerid][pMember] == 5 || PlayerInfo[playerid][pLeader] != 5)
{
SendClientMessage(playerid,COLOR_GREY," Du bist kein Cosa Nostra Mitglied !");
return 1;
}
Was ergibt das?
Wenn der Spieler Mitglied der Fraktion 5 ist kriegt er diese Nachricht.
Wenn der Spieler Leader eine Fraktion außer 5 ist kriegt er diese Nachricht.
Und wo ist nun der Unterschied?
Du musst das erste == zu != machen.Da du ja denjenigen das schicken willst, die nicht in der Fraktion sind.
mfg Kavkus
Ist dieses Thema nun eigentlich erledigt? Wenn ja dann bitte den Beantwortet button drücken,
wenn dies nicht der fall ist sagen welches problem nun aktuell ist.
Hier habe mich mal rangesetzt, wenn probleme auftreten melden.
P.S nicht getestet.
new Fahrzeuge;
dcmd_veh(playerid,params[])
{
new mid,c1,c2;
if(sscanf(params,"ddd",mid,c1,c2)) return SendClientMessage(playerid,COLOR_XXXX,"Benutze: /veh [ModelID] [Color1] [Color2]");
if(Fahrzeuge<MAX_VEHICLES)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
CreateVehicle(mid,x,y,z+10,0,c1,c2,-1);
CarInfo[Fahrzeuge][Model]=mid;
CarInfo[Fahrzeuge][X]=x;
CarInfo[Fahrzeuge][Y]=y;
CarInfo[Fahrzeuge][Z]=z;
CarInfo[Fahrzeuge][Angle]=90.0;
CarInfo[Fahrzeuge][Color1]=c1;
CarInfo[Fahrzeuge][Color2]=c2;
SetVehicleToRespawn((Fahrzeuge+1));
new query[120];
format(query, sizeof(query), "INSERT INTO autos (VehicleID) VALUES ('%d')",Fahrzeuge);
mysql_query(query);
Fahrzeuge++;
}
return 1;
}
stock SaveFahrzeuge()
{
if(Fahrzeuge==0)
{
print("Keine Daten vorhanden");
return 1;
}
new idx,vid=1;
new cmdstr[200];
while(idx<Fahrzeuge)
{
format(cmdstr,sizeof(cmdstr),"UPDATE autos SET Model=%d WHERE VID=%d",VehicleInfo[idx][Model],vid); mysql_query(cmdstr);
format(cmdstr,sizeof(cmdstr),"UPDATE autos SET X=%f WHERE VID=%d",VehicleInfo[idx][X],vid); mysql_query(cmdstr);
format(cmdstr,sizeof(cmdstr),"UPDATE autos SET Y=%f WHERE VID=%d",VehicleInfo[idx][Y],vid); mysql_query(cmdstr);
format(cmdstr,sizeof(cmdstr),"UPDATE autos SET Z=%f WHERE VID=%d",VehicleInfo[idx][Z],vid); mysql_query(cmdstr);
format(cmdstr,sizeof(cmdstr),"UPDATE autos SET Angle=%f WHERE VID=%d",VehicleInfo[idx][Angle],vid); mysql_query(cmdstr);
format(cmdstr,sizeof(cmdstr),"UPDATE autos SET Farbe1=%d WHERE VID=%d",VehicleInfo[idx][Farbe1],vid); mysql_query(cmdstr);
format(cmdstr,sizeof(cmdstr),"UPDATE autos SET Farbe2=%d WHERE VID=%d",VehicleInfo[idx][Farbe2],vid); mysql_query(cmdstr);
vid++;
idx++;
}
return 1;
}
stock LoadFahrzeuge()
{
new idx;
mysql_query("SELECT * from autos ORDER BY vid ASC");
mysql_store_result();
Fahrzeuge=mysql_num_rows();
new Data[1024];
while(idx<Fahrzeuge)
{
new Field[64];
new rcnt = 0;
mysql_fetch_row(Data);
mysql_strtok(Field, "|", Data);
while (mysql_strtok(Field, "|", "")==1)
{
if (rcnt == 0){CarInfo[idx][Model]=strval(Field);}
if (rcnt == 1){CarInfo[idx][X]=floatstr(Field);}
if (rcnt == 2){CarInfo[idx][Y]=floatstr(Field);}
if (rcnt == 3){CarInfo[idx][Z]=floatstr(Field);}
if (rcnt == 4){CarInfo[idx][Angle]=floatstr(Field);}
if (rcnt == 5){CarInfo[idx][Farbe1]=strval(Field);}
if (rcnt == 6)
{
CarInfo[idx][Farbe2]=strval(Field);
CreateVehicle(CarInfo[idx][Model],CarInfo[idx][X],CarInfo[idx][A],CarInfo[idx][Z],CarInfo[idx][Angle],CarInfo[idx][Farbe1],CarInfo[idx][Farbe2],-1);
SetVehicleToRespawn((idx+1));
}
rcnt++;
}
idx++;
}
if(Fahrzeuge==0)
print("Tabelle ist leer");
else
printf("%d Autos geladen und gefunden",Fahrzeuge);
return 1;
}