21.01.2009, 20:45
A few weeks ago I scripted these things for a roleplay server.
And some parts... I don't have any use for it.
If you don't use MidoStream Object Streamer just replace the DestroyStreamObject with DestroyObject and
CreateStreamObject with CreateObject (you have to delete the ",200.0" in the end of the line)
Have fun
<english only>
Add this Commands / publics to your godfather gamemode:
Note: You may have to change the location IDs.
Now everybode except Cops can buy bombs and blow them up with /placebomb and /blowup
And some parts... I don't have any use for it.
If you don't use MidoStream Object Streamer just replace the DestroyStreamObject with DestroyObject and
CreateStreamObject with CreateObject (you have to delete the ",200.0" in the end of the line)
Have fun
<english only>
Bombs
Add this Commands / publics to your godfather gamemode:
Code:
new Float:Bomb_x[MAX_PLAYERS], Float:Bomb_y[MAX_PLAYERS], Float:Bomb_z[MAX_PLAYERS],Bomb[MAX_PLAYERS],Bomb_car[MAX_PLAYERS], Bomb_e[MAX_PLAYERS];
Code:
enum pInfo ..... pBomb,
Code:
if (strcmp(cmd, "/blowup", true) == 0) { if(IsPlayerConnected(playerid)) { if(PlayerCuffed[playerid] > 0) { SendClientMessage(playerid, COLOR_GREY, " You cant blow up this bomb you already Cuffed !"); return 1; } if(Bomb_e[playerid] != 0 || Bomb_car[playerid] != 0) { BlowUpBomb(playerid); } else { SendClientMessage(playerid, COLOR_GRAD2, "Use /placebomb first!"); return 1; } } return 1; } if (strcmp(cmd, "/placebomb", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(IsACop(playerid)) { SendClientMessage(playerid, COLOR_GREY, " To bad you are a Cop !"); return 1; } if(PlayerCuffed[playerid] > 0) { SendClientMessage(playerid, COLOR_GREY, " You cant place a bomb you already Cuffed !"); return 1; } if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /placebomb [detonator] [time] seconds!!!"); SendClientMessage(playerid, COLOR_GRAD2, "types: 0 = time, 1 = manual"); return 1; } new detonator; detonator = strval(tmp); if(detonator == 0) { tmp = strtok(cmdtext, idx); new time; time = strval(tmp); if(time > 0) { if(PlayerInfo[playerid][pBomb] > 0) { if(Bomb_car[playerid] != 0 || Bomb_e[playerid] != 0) { SendClientMessage(playerid, COLOR_GRAD2, "Wait until your other bomb explodes!"); return 1; } if(IsPlayerInAnyVehicle(playerid)) { new car = GetPlayerVehicleID(playerid); Bomb_car[playerid] = car; format(string, sizeof(string), "You placed a bomb in your vehicle wich will blow up in %d seconds", time); SendClientMessage(playerid, COLOR_RED2, string); PlayerInfo[playerid][pBomb] -=1; } else { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x,y,z); Bomb_x[playerid] = x; Bomb_y[playerid] = y; Bomb_z[playerid] = z; Bomb[playerid] = CreateStreamObject(1654,Bomb_x[playerid],Bomb_y[playerid],Bomb_z[playerid]-0.958,270.0,0.0,00.00,200.0); format(string, sizeof(string), "You placed a bomb wich will blow up in %d seconds", time); SendClientMessage(playerid, COLOR_RED2, string); PlayerInfo[playerid][pBomb] -= 1; format(string, sizeof(string), "You have %d bombs left.", PlayerInfo[playerid][pBomb]); SendClientMessage(playerid, COLOR_RED2, string); Bomb_e[playerid] = 1; } SetTimerEx("BlowUpBomb", time*1000, 0, "i", playerid); return 1; } else { SendClientMessage(playerid, COLOR_GRAD2, "You don't have a bomb!"); return 1; } } } else { if(PlayerInfo[playerid][pBomb] > 0) { if(Bomb_car[playerid] != 0 || Bomb_e[playerid] != 0) { SendClientMessage(playerid, COLOR_GRAD2, "Wait until your other bomb explodes!"); return 1; } if(IsPlayerInAnyVehicle(playerid)) { new car = GetPlayerVehicleID(playerid); Bomb_car[playerid] = car; format(string, sizeof(string), "You placed a bomb in your vehicle. Use /blowup to blow up the bomb."); SendClientMessage(playerid, COLOR_RED2, string); PlayerInfo[playerid][pBomb] -=1; } else { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x,y,z); Bomb_x[playerid] = x; Bomb_y[playerid] = y; Bomb_z[playerid] = z; Bomb[playerid] = CreateStreamObject(1654,Bomb_x[playerid],Bomb_y[playerid],Bomb_z[playerid]-0.958,270.0,0.0,00.00,200.0); format(string, sizeof(string), "You placed a bomb. Use /blowup to blow up the bomb."); SendClientMessage(playerid, COLOR_RED2, string); PlayerInfo[playerid][pBomb] -= 1; Bomb_e[playerid] = 1; } } else { SendClientMessage(playerid, COLOR_GRAD2, "You don't have a bomb!"); return 1; } } } return 1; } if (strcmp(cmd, "/buygun", true) == 0) { if(IsPlayerConnected(playerid)) { if(GetPlayerMoney(playerid) < 1) { SendClientMessage(playerid, COLOR_GREY, " You dont have enough money with you !"); return 1; } new gun; new gunid[16]; new gunstring1[256]; new gunstring2[256]; new gunstring3[256]; new gunstring4[256]; new gunstring5[256]; new infostring[256]; new guncharge; new ammocharge; new location = PlayerInfo[playerid][pLocal]; if(location == 99 || location == 100 || location == 102 || location == 104) { if(BizzInfo[location-99][bProducts] <= 0) { GameTextForPlayer(playerid, "~r~Out Of Stock", 5000, 1); return 1; } new mod = 100; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { format(string, sizeof(string), "USAGE: /buygun [gunname] [ammoamount]"); SendClientMessage(playerid, COLOR_GREEN,"_______________________________________"); SendClientMessage(playerid, COLOR_WHITE,"*** Guns & Ammo ***"); SendClientMessage(playerid, COLOR_GRAD2,string); format(gunstring1, 256, "Weapons: parachute ($%d) golfclub ($%d) nightstick ($%d) baseballbat ($%d) shovel ($%d) poolcue ($%d)", GunPrice[0][0]/100*mod,GunPrice[1][0]/100*mod,GunPrice[2][0]/100*mod,GunPrice[3][0]/100*mod,GunPrice[4][0]/100*mod,GunPrice[5][0]/100*mod,GunPrice[6][0]/100*mod); SendClientMessage(playerid, COLOR_GRAD3, gunstring1); format(gunstring2, 256, "Weapons: purpledildo ($%d) whitedildo ($%d) longwhitedildo ($%d) whitedildo2 ($%d) flowers ($%d) cane", GunPrice[7][0]/100*mod,GunPrice[8][0]/100*mod,GunPrice[9][0]/100*mod,GunPrice[10][0]/100*mod,GunPrice[11][0]/100*mod,GunPrice[12][0]/100*mod); SendClientMessage(playerid, COLOR_GRAD3, gunstring2); format(gunstring3, 256, "Weapons: sdpistol ($%d) deagle ($%d) mp5 ($%d)", GunPrice[13][0]/100*mod,GunPrice[14][0]/100*mod,GunPrice[15][0]/100*mod,GunPrice[16][0]/100*mod,GunPrice[17][0]/100*mod,GunPrice[18][0]/100*mod); SendClientMessage(playerid, COLOR_GRAD3, gunstring3); format(gunstring4, 256, "Weapons: shotgun ($%d) ak47 ($%d) m4 ($%d) rifle ($%d)", GunPrice[19][0]/100*mod,GunPrice[20][0]/100*mod,GunPrice[21][0]/100*mod,GunPrice[22][0]/100*mod,GunPrice[23][0]/100*mod,GunPrice[24][0]/100*mod); SendClientMessage(playerid, COLOR_GRAD3, gunstring4); format(gunstring5, 256, "Weapons: pistolammo ($%d) shotgunammo ($%d) smgammo ($%d) assaultammo ($%d) rifleammo ($%d)", GunPrice[25][0],GunPrice[26][0],GunPrice[27][0],GunPrice[28][0],GunPrice[29][0]); SendClientMessage(playerid, COLOR_GRAD3, gunstring5); SendClientMessage(playerid, COLOR_GRAD3, "Weapons: bomb ($150000)"); SendClientMessage(playerid, COLOR_GREEN,"_______________________________________"); return 1; } strmid(gunid, tmp, 0, strlen(cmdtext), 255); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { format(string, sizeof(string), "USAGE: /buygun [gunname] [ammoamount]"); return 1; } new ammo = strval(tmp); if(ammo < 1 || ammo > 999) { SendClientMessage(playerid, COLOR_GREY, " Ammo ammount not lower then 1 or higher then 999 !"); return 1; } if (strcmp(gunid, "parachute", true, strlen(gunid)) == 0) { gun = 46; guncharge = GunPrice[0][0]/100*mod; ammocharge = 0; } else if (strcmp(gunid, "golfclub", true, strlen(gunid)) == 0) { gun = 2; guncharge = GunPrice[1][0]/100*mod; ammocharge = 0; PlayerInfo[playerid][pGun1] = 2; PlayerInfo[playerid][pAmmo1] = 1; } else if (strcmp(gunid, "nightstick", true, strlen(gunid)) == 0) { gun = 3; guncharge = GunPrice[2][0]/100*mod; ammocharge = 0; PlayerInfo[playerid][pGun1] = 3; PlayerInfo[playerid][pAmmo1] = 1; } else if (strcmp(gunid, "baseballbat", true, strlen(gunid)) == 0) { gun = 5; guncharge = GunPrice[4][0]/100*mod; ammocharge = 0; PlayerInfo[playerid][pGun1] = 5; PlayerInfo[playerid][pAmmo1] = 1; } else if (strcmp(gunid, "shovel", true, strlen(gunid)) == 0) { gun = 6; guncharge = GunPrice[5][0]/100*mod; ammocharge = 0; PlayerInfo[playerid][pGun1] = 6; PlayerInfo[playerid][pAmmo1] = 1; } else if (strcmp(gunid, "poolcue", true, strlen(gunid)) == 0) { gun = 7; guncharge = GunPrice[6][0]/100*mod; ammocharge = 0; PlayerInfo[playerid][pGun1] = 7; PlayerInfo[playerid][pAmmo1] = 1; } else if (strcmp(gunid, "purpledildo", true, strlen(gunid)) == 0) { gun = 10; guncharge = GunPrice[7][0]/100*mod; ammocharge = 0; PlayerInfo[playerid][pGun1] = 10; PlayerInfo[playerid][pAmmo1] = 1; } else if (strcmp(gunid, "whitedildo", true, strlen(gunid)) == 0) { gun = 11; guncharge = GunPrice[8][0]/100*mod; ammocharge = 0; PlayerInfo[playerid][pGun1] = 11; PlayerInfo[playerid][pAmmo1] = 1; } else if (strcmp(gunid, "longwhitedildo", true, strlen(gunid)) == 0) { gun = 12; guncharge = GunPrice[9][0]/100*mod; ammocharge = 0; PlayerInfo[playerid][pGun1] = 12; PlayerInfo[playerid][pAmmo1] = 1; } else if (strcmp(gunid, "whitedildo2", true, strlen(gunid)) == 0) { gun = 13; guncharge = GunPrice[10][0]/100*mod; ammocharge = 0; PlayerInfo[playerid][pGun1] = 13; PlayerInfo[playerid][pAmmo1] = 1; } else if (strcmp(gunid, "flowers", true, strlen(gunid)) == 0) { gun = 14; guncharge = GunPrice[11][0]/100*mod; ammocharge = 0; PlayerInfo[playerid][pGun1] = 14; PlayerInfo[playerid][pAmmo1] = 1; } else if (strcmp(gunid, "cane", true, strlen(gunid)) == 0) { gun = 15; guncharge = GunPrice[12][0]/100*mod; ammocharge = 0; PlayerInfo[playerid][pGun1] = 15; PlayerInfo[playerid][pAmmo1] = 1; } else if (strcmp(gunid, "sdpistol", true, strlen(gunid)) == 0) { gun = 23; guncharge = GunPrice[13][0]/100*mod; ammocharge = GunPrice[25][0]*ammo; PlayerInfo[playerid][pGun2] = 23; PlayerInfo[playerid][pAmmo2] = ammo; } else if (strcmp(gunid, "deagle", true, strlen(gunid)) == 0) { gun = 24; guncharge = GunPrice[15][0]/100*mod; ammocharge = GunPrice[25][0]*ammo; PlayerInfo[playerid][pGun2] = 24; PlayerInfo[playerid][pAmmo2] = ammo; } else if (strcmp(gunid, "mp5", true, strlen(gunid)) == 0) { gun = 29; guncharge = GunPrice[18][0]/100*mod; ammocharge = GunPrice[27][0]*ammo; PlayerInfo[playerid][pGun3] = 29; PlayerInfo[playerid][pAmmo3] = ammo; } else if (strcmp(gunid, "shotgun", true, strlen(gunid)) == 0) { gun = 25; guncharge = GunPrice[19][0]/100*mod; ammocharge = GunPrice[26][0]*ammo; PlayerInfo[playerid][pGun3] = 25; PlayerInfo[playerid][pAmmo3] = ammo; } else if (strcmp(gunid, "ak47", true, strlen(gunid)) == 0) { gun = 30; guncharge = GunPrice[22][0]/100*mod; ammocharge = GunPrice[28][0]*ammo; PlayerInfo[playerid][pGun4] = 30; PlayerInfo[playerid][pAmmo4] = ammo; } else if (strcmp(gunid, "m4", true, strlen(gunid)) == 0) { gun = 31; guncharge = GunPrice[23][0]/100*mod; ammocharge = GunPrice[28][0]*ammo; PlayerInfo[playerid][pGun4] = 31; PlayerInfo[playerid][pAmmo4] = ammo; } else if (strcmp(gunid, "rifle", true, strlen(gunid)) == 0) { gun = 33; guncharge = GunPrice[24][0]/100*mod; ammocharge = GunPrice[29][0]*ammo; PlayerInfo[playerid][pGun4] = 33; PlayerInfo[playerid][pAmmo4] = ammo; } else if (strcmp(gunid, "bomb", true, strlen(gunid)) == 0) { ammocharge = 75000; guncharge = 75000; gun = 999; } else { SendClientMessage(playerid, COLOR_GRAD6, "ShopKeeper says: I have never heard of that weapon."); return 1; } if((guncharge+ammocharge) > GetPlayerMoney(playerid)) { format(infostring, 256, " You don't have $%d !",guncharge+ammocharge); SendClientMessage(playerid, COLOR_GRAD3, infostring); return 1; } if(GetPlayerMoney(playerid) < (guncharge+ammocharge)) { SendClientMessage(playerid, COLOR_GREY, " Can't afford that !"); return 1; } if(gun == 999) { ammo = 1; } new payout = guncharge + ammocharge; format(infostring, 256, "You have purchased %s with %d ammo for $%d",gunid,ammo,payout); SendClientMessage(playerid, COLOR_GRAD3, infostring); if(location == 102 && IsACop(playerid)) { } else { GivePlayerMoney(playerid, - payout); } if(gun != 999) { BizzInfo[location-99][bTill] += payout; ExtortionBiz(location-99, payout); } else { BizzInfo[location-99][bTill] += 15000; ExtortionBiz(location-99, 15000); } BizzInfo[location-99][bProducts]-=2; PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0); if(gun != 999) { PlayerWeapons[playerid] = 1; GivePlayerWeapon(playerid, gun, ammo); } else { PlayerInfo[playerid][pBomb] += ammo; } if(IsACop(playerid) && OnDuty[playerid] < 1) { PlayerInfo[playerid][pBomb] = 0; } GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "%s bought weapons for $%d at biz %d", sendername, payout, location-99); printf("%s", string); PayLog(string); } else { SendClientMessage(playerid, COLOR_WHITE,"You are not in a store."); return 1; } } return 1; }
Code:
forward BlowUpBomb(playerid); public BlowUpBomb(playerid) { if(Bomb_car[playerid] != 0) { new Float:x, Float:y, Float:z; GetVehiclePos(Bomb_car[playerid], x, y, z); CreateExplosion(x, y, z, 7, 45.0); SetVehicleHealth(Bomb_car[playerid], 10); Bomb_car[playerid] = 0; CreateExplosion(x+10,y,z,7,45.0); CreateExplosion(x,y+10,z,7,45.0); CreateExplosion(x-10,y,z,7,45.0); CreateExplosion(x,y-10,z,7,45.0); } else { CreateExplosion(Bomb_x[playerid], Bomb_y[playerid], Bomb_z[playerid], 7, 45.0); DestroyStreamObject(Bomb[playerid]); Bomb_e[playerid] = 0; CreateExplosion(Bomb_x[playerid]+10,Bomb_y[playerid],Bomb_z[playerid],7,45.0); CreateExplosion(Bomb_x[playerid],Bomb_y[playerid]+10,Bomb_z[playerid],7,45.0); CreateExplosion(Bomb_x[playerid]-10,Bomb_y[playerid],Bomb_z[playerid],7,45.0); CreateExplosion(Bomb_x[playerid],Bomb_y[playerid]-10,Bomb_z[playerid],7,45.0); for(new v = 0; v < 700; v++) { if(VehicleToPoint(30.0, v, Bomb_x[playerid], Bomb_y[playerid], Bomb_z[playerid])) { SetVehicleHealth(v, 10); } } } SendClientMessage(playerid, COLOR_RED2, "Your bomb exploded"); WantedPoints[playerid]+= 12; SetPlayerCriminal(playerid, 255, "Planted a bomb"); return 1; } forward VehicleToPoint(Float:radi, vehicleid, Float:x, Float:y, Float:z); public VehicleToPoint(Float:radi, vehicleid, Float:x, Float:y, Float:z) { new Float:oldposx, Float:oldposy, Float:oldposz; new Float:tempposx, Float:tempposy, Float:tempposz; GetVehiclePos(vehicleid, oldposx, oldposy, oldposz); tempposx = (oldposx -x); tempposy = (oldposy -y); tempposz = (oldposz -z); if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) { return 1; } return 0; }
Now everybode except Cops can buy bombs and blow them up with /placebomb and /blowup