Das habe ich dort oben bei dem Code den ich gepostet habe doch bereits getan und wie ich schon sagte das funktioniert nicht.
Beiträge von Xtreame
-
-
Hallo ich habe da mal eine Frage. Ich benutze ZCMD und ich würde gern das SERVER: UNKOWN COMMAND verändern. Nur wenn ich es Damit versuche dann funktioniert das nicht.
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
new str[128];
format(str,sizeof(str),"Den Command %s scheint es nicht zu geben.",cmdtext);
return SendClientMessage(playerid,C_WHITE,str);
}Weiß da jemand was wie das funktioniert? Bedanke mich schonmal im vorraus.
-
Danke Opa_Schlumpf!
Ich habe die dll Datei erstezt und es funzt. Ich werde mir das merken und wenn ich so ein Problem habe dann in die "Original" Threads gucken.
EDIT:
also auf Windows hat mir das ja geholfen was Opa_Schlumpf geschrieben hat. Leider funktioniert dies aber nicht auf einen Linux Server. Ich habe mir den Original Thread angeguckt und auch die Beiträge die nach dem Download waren also der den Fehler behoben hat. Aber diese haben mir nichts gebracht. Dort hat wohl wenn ich das richtig gelesen habe auch schon jemand nachgefragt nach einer Linux version aber naja ich konnte nicht lesen das diese jemand hat.
Also hat jemand eine Version von sscanf die funktioniert also wo dieser "Fix" enthalten ist. Oder kann mir jemand erklären wie ich mir eine funktionierende Version von sscanf2 erstelle mit den Datein die dort enthalten sind.
EDIT: PUSH
-
Ich meinte auch eigentlich GoldHamster
-
OK wenn es bei dir funktioniert. Frage ich dich ob du etwas anders gemacht hast. Könntest du bitte mal Zeigen was du hast?
Ich habe das neuste drin -
Hallo,
ich bin am verzweifeln. Ich nutze sscanf2 so und ich möchte jetzt zum beispiel hiermit:
CMD:name(playerid, params[])
{
new pID, str[128];
if(sscanf(params, "u", pID)) return SendClientMessage(playerid, C_BENUTZE, "Benutze: /name [pID/Name]");
format(str, sizeof(str), "Der Name lautet: %s", Spielername(pID));
SendClientMessage(playerid, C_WHITE, str);
return 1;
}das mir der Name von der ID oder den Teil des Namens den ich eingebe angezeigt wird. So Spielername(pID); Die funktion ist hier.
stock Spielername(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}Diese hat in 0.3c Funktioniert. Aber jetzt in 0.3d tut sie es nicht mehr. Kann mir jemand erklären wie ich anders den Namen herrausfinden kann. Ohne das ich evtl. jedes mal mit GetPlayerName(); Arbeiten muss.
Wenn ich das so nutze dann wird mir Halt der Text bis zum %s angezeigt und der Name nicht.MFG Xtreame
-
OK Vielen Vielen Dank für jegliche Hilfe.
Das von dir Goldkiller habe ich zwar bisher noch nicht alles ganz verstanden aber ich werde mir das auf jeden fall genauer anschauen Damit ich das auch Verstehe.
Jetzt aber noch eine Frage wenn ich jetzt zum Beispiel möchte das man mit dem /v befehl nur Bestimmte Fahrzeuge nicht spawnen kann also diese Quasi gesperrt sind für Diesen Befehl wie mache ich das?
und würde das hier funktionieren? Das soll das spawnen Begrenzen
if(GetPVarInt(playerid, "test") < 4)
{
SetPVarInt(playerid, "test", GetPVarInt(playerid, "test") +1);
//Inhalt vom /v befehl
}
if(GetPVarInt(playerid, "test") == 4)
{
SendClientMessage(playerid, COLOR_ROT, "...");
} -
Ja das mag wohl sein.
Ich habe auch schon weiter versucht slber was zu machen aber naja geht halt net.
Vielleicht weiß noch jemand anderes eine Möglichkeit.
-
Erstens Ja ( mein Script und Server ). Nein da ich ZCMD nutze und das kommt meines Wissens nach nicht dort rein. Hatte ich vorher nicht aber jetzt. Bringt aber nichts. Habe sscanf2 also das was man halt zu Diesen Zeitpunkt runterladen kann.
-
Nein Errors sind nach dem umschreiben nicht vorhanden aber Ingame sagt er mir wenn ich den Befehl mit einem Wert eingebe Unkown Command
-
Leider funktioniert dies nicht.
Ich glaube ich bin zu dumm Dafür. Ich habe versucht sämtliche sachen umzuschreiben und auf meines anzupassen aber Leider ohne erfolg. Vielleicht noch eine Idee.
evtl kann mir auch jemand per Teamviewer helfen oder genauer per Skype oder ICQ beschreiben.Skype Xtreame441
ICQ 642480567 -
DANKE,
das is zwar nicht ganz das was ich suchte aber ich kriege auch nicht hin das bei mir einzubauen. Nen Profi bin ich ja auch nicht Geht das nicht evtl. leichter Also das er in meinem /v Befehl nur noch zusätzlich die Namen abfragt und dann halt dieses -400??? Ich habe das auch schon versucht nur noch nicht hinbekommen.
Simon ich bin dir wirklich dankbar.
Aber Kann mir nicht noch jemand ne andere Passende Lösung dazu Schreiben
EDIT: OK habe eine Zahl falsch definiert Funktioniert Prima.
-
Weiß da keiner eine Lösung?
-
Schönen Guten Abend,
ich suche schon vergebens seit 5 Stunden nach einem /v Befehl womit ich auch /v nrg eingeben kann. Ich habe es Bisher nur so das ich das mit der ModelID machen kann.
Das ist das was ich bisher habe.
CMD:v(playerid, params[])
{
if(GetPVarInt(playerid, "test") < 4)
{
SetPVarInt(playerid, "test", GetPVarInt(playerid, "test") +1);
new ModelID, Float:VehPos[4], vehicleid;
new color1 = random(252);
new color2 = random(252);
if(GetPlayerState(playerid)!=PLAYER_STATE_ONFOOT) return SendClientMessage(playerid,0xB0AFB0FF,"Du bist nicht zu Fuß unterwegs!");
if(sscanf(params, "d",ModelID)) return SendClientMessage(playerid,0xB0AFB0FF, "Benutze: /v [vehicleid]");
if(ModelID < 400 || ModelID > 611) return SendClientMessage(playerid,0xB0AFB0FF, "Die VehicleID muss zwischen 400 und 611 liegen");
GetPlayerPos(playerid, VehPos[0],VehPos[1],VehPos[2]);
GetPlayerFacingAngle(playerid, VehPos[3]);
vehicleid = CreateVehicle(ModelID,VehPos[0],VehPos[1],VehPos[2],VehPos[3],color1,color2,-1);
LinkVehicleToInterior(vehicleid,GetPlayerInterior(playerid));
SetVehicleVirtualWorld(vehicleid,GetPlayerVirtualWorld(playerid));
PutPlayerInVehicle(playerid, vehicleid, 0);
new vid = GetPlayerVehicleID(playerid);
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
motor[vid] = true;
}
if(GetPVarInt(playerid, "test") == 4)
{
SendClientMessage(playerid, COLOR_ROT, "Alle Slots sind belegt, lösche mit /des (im Wagen)");
}
return 1;
}Man kann hier auch erkennen das ich das Spawnenbegrenzt habe Leider macht er das bei mir so das wenn ich das 4te mal /v ... eingebe das er Zeigt ein Fahrzeug spawnt und im selben Moment auch schreibt das alle Slots belegt sind weiß da jemand eine Andere Lösung für das er das erst anzeigt wenn ich es das nächste mal eingebe. Wenn nicht dann halb so wild.
Wäre wirklich sehr Nett wenn mir jemand den Befehl so erweitern könnte das das geht mit dem /v [VehicleName].
Das habe ich auch schon.
new pAllVehicleNames[][] =
{
"Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel", "Dumper", "Firetruck", "Trashmaster",
"Stretch", "Manana", "Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
"Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection", "Hunter", "Premier", "Enforcer",
"Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach",
"Cabbie", "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral", "Squalo", "Seasparrow",
"Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair",
"Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale", "Oceanic",
"Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler", "ZR-350", "Walton",
"Regina", "Comet", "BMX", "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper", "Rancher",
"FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking", "Blista Compact", "Police Maverick",
"Boxvillde", "Benson", "Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher",
"Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt", "Tanker", "Roadtrain",
"Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck",
"Fortune", "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan",
"Blade", "Freight", "Streak", "Vortex", "Vincent", "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder",
"Primo", "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite", "Windsor", "Monster", "Monster",
"Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
"Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper", "Broadway", "Tornado", "AT-400", "DFT-30",
"Huntley", "Stafford", "BF-400", "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
"Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car", "Police Car", "Police Car",
"Police Ranger", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs",
"Boxville", "Tiller", "Utility Trailer"
};Danke schonmal im vorraus.
-
Hallo,
ich würde in meinem /v Befehl gerne auch die Namen der cars eingeben können um diese zu spawnen.
Habe schon gesehen das man das in einem Enum macht aber ich wüsste jetzt nicht wie ich da drauf zugreifen kann also wenn ich die Namen eingebe greift der dann auch automatisch auf die ID´s zu oder wie funktioniert das. könnte mir da jemand mal ein Tut zu zeigen machen oder mir hier mal erklären. Wäre sehr nett danke.
MfG
-
Ok Dann dürfte das ja jetzt so Richtig sein oder?
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_ACTION)
{
if(rampe[playerid] == true && gesprungen[playerid] == false)
{
new Float:angle, Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
angle = GetXYInFrontOfPlayer(playerid, x, y, GetOptimumRampDistance(playerid));
if (angle < 0.0) angle += 360.0;
z += 0.5;
DesRamp[playerid] = CreateObject(1632, x, y, z - 0.5, 0.0, 0.0, angle);
SetTimer("DestroyRamp", 2000, 0);
gesprungen[playerid] = true;
}
else
{}
}
return 1;
}
public DestroyRamp(playerid)
{
if(gesprungen[playerid] == true)
{
DestroyObject(DesRamp[playerid]);
gesprungen[playerid] = false;
}
}
CMD:rampe(playerid, params[])
{
if(rampe[playerid] == false)
{
TextDrawHideForPlayer(playerid, RampenTextOff);
TextDrawShowForPlayer(playerid, RampenTextOn);
rampe[playerid] = true;
}
else if(rampe[playerid] == true)
{
TextDrawHideForPlayer(playerid, RampenTextOn);
TextDrawShowForPlayer(playerid, RampenTextOff);
rampe[playerid] = false;
}
return 1;
} -
Hi,
OK ich danke dir für deine Erklärung und denke das ich es verstanden habe.
Also fast richtig Ich habe das was du oben siehst und möchte es aber das es jeder nutzen kann. Nur das kriege ich nicht hin.
Ich werde nochmal drüber gucken und überlegen. -
Hallo,
Also ich weiß das ist denke ich mal leicht und ich denke mal ich weiß auch die Lösung aber bei mir funzt das nicht.
Ich habe mir mit Hilfe von verschiedenen Threads was gebastelt und zwar das man ne Rampe Spawnen kann. So jetzt funktioniert das aber nicht. Wenn ich jemand anders eine spawnt kommt diese bei mir.Also ich würde gerne mal wissen ob es da ne "Regel" gibt wo man überall "i" oder "playerid" nutzen muss.
Hier mal das was ich alles zu dem "Befehl" habe.
new DesRamp[MAX_PLAYERS];
new bool: rampe[MAX_PLAYERS];
new bool: gesprungen[MAX_PLAYERS];
forward DestroyRamp(playerid);public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_ACTION)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(rampe[i] == true && gesprungen[i] == false)
{
new Float:angle, Float:x, Float:y, Float:z;
GetPlayerPos(i, x, y, z);
angle = GetXYInFrontOfPlayer(playerid, x, y, GetOptimumRampDistance(playerid));// das hatte ich jetzt nur von i in playerid geändert aber noch nicht getestet
if (angle < 0.0) angle += 360.0;
z += 0.5;
DesRamp[i] = CreateObject(1632, x, y, z - 0.5, 0.0, 0.0, angle);
SetTimer("DestroyRamp", 2000, 0);
gesprungen[i] = true;
}
else
{
}
}
}
return 1;
}public DestroyRamp(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(gesprungen[playerid] == true)
{
DestroyObject(DesRamp[i]);
gesprungen[i] = false;
}
}
}Float:GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
{
new Float:a;
GetPlayerPos(playerid, x, y, a);
if (IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
else GetPlayerFacingAngle(playerid, a);
x += (distance * floatsin(-a, degrees));
y += (distance * floatcos(-a, degrees));
return a;
}
Float:GetOptimumRampDistance(playerid)
{
new ping = GetPlayerPing(playerid), Float:dist;
dist = floatpower(ping, 0.25);
dist = dist*4.0;
dist = dist+5.0;
return dist;
}CMD:rampe(playerid, params[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(rampe[i] == false)
{
TextDrawHideForPlayer(playerid, RampenTextOff);
TextDrawShowForPlayer(playerid, RampenTextOn);
rampe[i] = true;
}
else if(rampe[i] == true)
{
TextDrawHideForPlayer(playerid, RampenTextOn);
TextDrawShowForPlayer(playerid, RampenTextOff);rampe[i] = false;
}
}
return 1;
}ich habe schon mit den for schleifen rumprobiert und geguckt wie und was geht. Aber ich weiß nicht vielleicht bin ich zu dumm.
Wäre auch sehr nett wenn mir jemand mal ein Tutorial dazu geben könnte mit den Schleifen bzw. wie das geht das mehrer Spieler z.B. einen timer nutzen können oder wie auch immer. Damit ich das für die zukundt lernen kann.
MfG
Xtreame -
-
Hallo,
da ich das mit dem MD5 nicht hinkriege bitte ich hier nochmals um Hilfe. Ich habe einen MD5 Include.
Hier mal der Code davon da ich die Downloadseite nicht mehr weiss
http://pastebin.com/f4SeiNCXAlso das Speichern in die DB habe ich hingekriegt jetzt weiss ich nur nicht wie ich das wieder hinkriegen soll das er das auch wieder ausliest.
Reinschreiben tue ich das so.
mysql_SetString("accs", "Passwort", MD5_Hash("inputtext"), "Nickname", PlayerName[playerid]);ausgelesen wird es folgendermaßen
if(strcmp(inputtext, mysql_GetString("accs", "Passwort", "Nickname", PlayerName[playerid]), true) == 0)
wenn ich hierbei natürlich das normale passwort eingebe sagt er mir neee du darfst nich rein weil er ja den MD5 Hash als pw ingame fordert. Das is ja logischjetzt hatte ich vor das so zu machen
if(strcmp(MD5_Init(inputtext), mysql_GetString("accs", "Passwort", "Nickname", PlayerName[playerid]), true) == 0)// zeigt mir aber diesen Error
test.pwn(310) : error 047: array sizes do not match, or destination array is too smalljetzt frage ich euch ob mir jemand mit dem Include helfen kann oder eine andere Methode weiss.
Ich bedanke mich schonmal im vorraus für jegliche hilfe
EDIT: ich habe jetzt einfach die eingabe auch in MD5_Hash umgewandelt. Ich glaube nicht unbedingt das das im Sinne des erfinders ist aber es funktioniert.
if(strcmp(MD5_Hash("inputtext"), mysql_GetString("accs", "Passwort", "Nickname", PlayerName[playerid]), true) == 0)