Changelog
# Change Log
All notable changes to this project will be documented in this file.
## Initial Release
## [0.1a] - 2017-03-14
### Added
- Binarysearch instead of iterators for pickup system.
- /stealth command to make yourself invisible for 60 seconds on minimap.
## [0.1b] - 2017-03-20
### Added
- Possibility to get a Warpkit to teleport yourself back to your base by using /warp command. Can be purchased for $100k in the shop.
- New reference map files including new PlayerInfoPickups array.
- New pickup type InfoPickups, to show certain important server information like rules, FAQ and more..
- SaveUser_data function to save userdata periodically into the user file.
- ResetPlayerData function to reset player vars and arrays after death/disconnect.
- TeleportPlayerToBase function to teleport the player back to his base using /warp command or /spawn command (Admin only).
-
### Removed
- The Seasparrow of team YELLOW on Chilliad map due to balancing.
- Usless/Unused player vars and arrays.
### Fix
- /stealth kit which didnt work before. The player was invisible on the map all the time. No reset.
- Map bugs on CHILLIAD and GREEN PALMS map.
- String length of several strings due to display problems.
## [0.1b] - 2017-03-21
### Added
- Added weather system for random weather.
- Weather can be set by admins, using /weather ID
- /dropmoney uses GenerateRandomPickup function now, to create money pickups.
- system to check if a team has won the game. (if other teams are empty)
- Improved several minor bugs.
- Major changes in score system.
- The winner of the team will now be determined if there is no player left in other teams
- Recursive function will be called in OnPlayerDeath instead of OnPlayerSpawn now.
- Dead player will be thrown into TEAM_SPECTATOR after death now if the bed is missing.
- GetPlayerCount() function added to count amount of players for use in TeamsAlive(bool:value) function.
- Recursive function TeamsAlive(bool:value) function (false/true) to count teams alive or check if there is only one team left.
- Fighting Style menu to purchase different fightstyles.
### Fix
- Increased weapon prices due to balancing reasons.
- Changed bomb activation radius to 150m instead of 100m.
## [0.1b] - 2017-03-28
### Added
- Function GivePlayerMoneyText to give or remove money from a player and display gametext.
- #define to change the value of Money Pickups.
## [0.1b] - 2017-03-28
### Added
- Function GivePlayerMoneyText to give or remove money from a player and display gametext.
- #define to change the value of Money Pickups.
## [0.1.3a] - 2018-03-02
### Fix
- Fixed major bugs.
- Fixed y_ini problems.
- Fixed a huge amount of bugs.
- Code optimization
Alles anzeigen
Ich gruesse euch liebe Community,
Hiermit praesentiere ich mein aktuelles Miniprojekt Last Bed Standing, basierend auf Grand Larceny!
Motivation:
Idee und Ziel dieses Projekts war es das Bedwars Minigame welches es auf vielen Minecraft Servern gibt in SA-MP und im SA-MP Stil nachzubauen (Bett sprengen statt abbauen etc..), und mal ein andere Art von Servern erstellen, denn man sieht ja leider nur noch Reallife.
Weiterhin programmiere ich im Rahmen meines Studiums viel in C, und warum nicht mal bisschen ueben durch Programmieren in einer C aehnlichne Sprache? Daraus ist dieses Projekt in nun ca. 2 Wochen entstanden, und was geht schon ueber ein Selfmade?
Desweiteren bin ich ein Fan von OpenSource Software, weshalb auch dieses Projekt hier fuer alle verfuegbar sein sollte.
Letztlich ist das Projekt nur aus Spass, und etwas Uebung fuer das Studium entstanden, und wird in Zukunft noch geupdated.
Aktuell befindet sich der Gamemode im Alpha Stadium und wird vorraussichtlich jede Woche geupdated.
Wenn es eine fehlerfreie Version gibt wird unter die GNU Public License gestellt, damit jeder das Werk aendern, verbreiten kann usw. soll ja schliesslich etwas fuer alle sein
Das Fragment welches aus Grand Larceny ist, ist lediglich die Team bzw. Stadtauswahl, meiner Ansicht nach viel schoener als der Standardkram den man auf sovielen Servern sieht.
Aktuell gibt es 3 Teams zur Auswahl aehnlich wie in Bedwars wo es zu Beginn auch eine Teamauswahl gibt.
Team ROT befindet sich am Sherman Staudamm, westlich von El Castillo del Diablo, Team GRAU bei Area 51 und Team BLAU bei Verdant Meadows, dem Flughafen.
Jedes Team verfuegt ueber einen Shop mit einem "Villager" bei welchem man Waffen, Armour , Skills und eine Bombe kaufen kann die noetig ist um ein feindliches Bett zu zerstoeren.
Alle Teams haben nahe Ihrer Base irgendein Fahrzeug wie z.B. Panzer oder Seasparrow um sich besser vor Feinden verteidigen zu koennen.
Jedes Team besitzt einen "Bronzespawner" bzw. da ich das ganze im GTA Stil machen wollte, einen Geldspawner, welcher random Geldpickups generiert, welche noetig sind um sich Waffen und andere Dinge zu kaufen.
Ziel ist es das Bett des feindlichen Teams zu zerstoeren (wobei nach dem Zerstoeren eines Betts das jeweilige Team nicht mehr respawnen kann), und dann die restlichen Spieler zu eliminieren, und so das Spiel zu gewinnen, wie in Bedwars halt.
Der Gamemode ist inzwischen im Vergleich zum Ursprungs Grand Larceny, nun mit insgesamt 2400 Zeilen ziemlich umfangreich.
Das ganze habe ich inzwischen mit 4 Spielern insgesamt ausprobiert, und ein Spiel dauert durchschnittlich 10 Minuten.
Der Spassfaktor ist trotz der Einfachheit des Gamemodes sehr gross!
Der Gamemode ist komplett in ENGLISCH geschrieben um auch Spieler aus anderen Laendern anzusprechen.
Aktuell laeuft das Script unter knogleinsi.de als SA-MP Server mit 32 Slots, und wird auch weiterhin dort laufen.
Weiterhin sind aktuell 4 verschiene Maps spielbar, und man kann problemlos weitere erstellen, dazu einfach die Muster in pawno/includes anschauen.
Features:
Das Script besitzt rund 3100 Zeilen, und ist eigentlich komplett selbst geschrieben, bis auf Tipps anderer User.
Der Teil aus Grand Larceny wurde grundlegend veraendert.
Es ist moeglich selbst Maps zu erstellen, dazu kann man einfach das Muster aus dem Ordner /pawno/include auf Github ziehen.
//Color tags for textdraw use
#define FIRST_TEAM_COLOR_TAG {610D96}VIOLET
#define SECOND_TEAM_COLOR_TAG {FFFF00}YELLOW
#define THIRD_TEAM_COLOR_TAG {8B4513}BROWN
#define TEAM_ONE_SEL_INTERIOR 0
#define TEAM_TWO_SEL_INTERIOR 0
#define TEAM_THREE_SEL_INTERIOR 0
#define TEAM_ONE_INTERIOR 0
#define TEAM_TWO_INTERIOR 0
#define TEAM_THREE_INTERIOR 0
// Team colors
#define COLOR_TEAM_ONE 0x610D9655 //Violet
#define COLOR_TEAM_TWO 0xFFFF0055 //Yellow
#define COLOR_TEAM_THREE 0x8B451355 //Brown
//Where the teams are located..
#define FIRST_TEAM_LOCATION Mount Chilliad (South)
#define SECOND_TEAM_LOCATION Mount Chilliad (North)
#define THIRD_TEAM_LOCATION Mount Chilliad (West)
stock const Float:GlobalActors[][]={
{-2261.4497,-1983.6539,251.0746,149.3091},//Violet
{-2816.3923,-1530.5948,140.8438,352.9545},//Brown
{-2347.8748,-1355.2128,299.7364,194.9771},//Yellow1
{ -2294.6057,-1282.0396,259.3622,221.0728},//Yellow2
{0.0,0.0,0.0,0.0},//Not defined
{0.0,0.0,0.0,0.0}//Not defined
};
stock const Float:GlobalZones[][]={
{-2452.354, -2066.984, -2160.407, -1891.816},//Violet
{-2849.402, -1646.58, -2732.623, -1413.023},//Brown
{-2428.998, -1389.667, -2218.796, -1202.821}//Yellow
};
stock const Float:MoneySpawns[][]={
{-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
};
stock const Float:MAP_WORLDBOUNDS[][]={
{-1728.326, -2977.858, -945.9079, -2323.897}
};
stock const Float:ClassSel_SetupTeamTEAM_POS[][]={
{-2244.3000000,-2015.5000000,280.3999900},//Violet
{-2282.7908,-1377.0408,365.6920},//Yellow
{-2758.2195,-1479.8926,202.8240}//Brown
};
stock const Float:ClassSel_SetupTeamTEAM_LOOK_AT[][]={
{-2316.7000000,-2040.2000000,261.2000000},//Violet
{-2305.9270,-1254.1742,239.8091},//Yellow
{-2834.3979,-1553.4116,110.3533}//Brown
};
stock const Float:beds[][] = {
{-2340.7637,-2024.7919,270.5094},//Violet
{-2812.6035,-1515.9814,140.8438},//Brown
{-2326.8735,-1356.4872,300.2661}//Yellow
};
stock const Float:gSpawnsTeam_TEAM_ONE[][] = {//Violet
{-2340.0759,-1984.2560,327.3245,96.6453},
{-2265.7549,-1982.4696,251.1930,327.2607},
{-2336.1033,-2026.0273,270.5272,153.9858},
{-2371.8701,-2009.8907,259.0939,163.6758},
{-2431.2183,-2012.5878,228.1622,206.6029},
{-2321.6675,-2031.6503,260.7211,265.2202},
{-2284.3025,-1956.8335,270.9055,218.2196}
};
stock const Float:gSpawnsTeam_TEAM_TWO[][] = {//Yellow
{-2287.0525,-1284.2802,259.3622,128.5823},
{-2323.8572,-1258.1201,243.6398,317.2668},
{-2290.4866,-1276.1278,259.3622,308.1799},
{-2275.3657,-1322.3977,277.1953,338.5501},
{-2336.4958,-1357.4409,299.7297,13.6672},
{-2353.0078,-1359.2170,299.7364,282.7996},
{-2412.6658,-1368.1118,332.8622,297.8398}
};
stock const Float:gSpawnsTeam_TEAM_THREE[][] = {
{-2818.0842,-1523.5146,140.8438,266.4268}, // brown1
{-2816.4951,-1536.1785,139.2891,87.5118}, // brown2
{-2865.6543,-1551.7012,139.9026,98.4785}, // brown3
{-2835.2129,-1509.0914,138.5741,279.8769}, // brown4
{-2818.6655,-1518.3864,140.8438,265.4634}, // brown5
{-2813.6826,-1460.6605,136.2261,272.9834} // brown6
};
Alles anzeigen
Einfach Koordinaten, Farben und Namen anpassen, und fertig!
Teamsize ist die Anzahl an Teams (Werde ich in Teamcount oder aehnlich umbauen) und kann zwischen 2 und 6 gewaehlt werden.
Genutzt wird eine Moeglichst effiziente Programmierweise, beispielsweise Binaersuche statt Iteratoren etc.
Pickupsystem ist dank der Hilfe von Usern hier nun super erweiterbar und super effizient.
Der Gamemode nutzt sscanf, jedoch keinen Command Generator, um strtok endlich komplett zu verdraengen.
Das Stats System nutzt y_ini, und es werden wie im Minecraft Bedwars, zerstoerte Betten, Kills/Deaths getrackt, und zusaetzlich noch detonierte Bomben, welche man im Shop kaufen kann.
Es gibt zwei neue Features in der Version 0.1b:
Stealth:
Man kann sich im Shop ein Stealth Paket kaufen, durch welches man auf der Map 60 Sekunden unsichtbar ist.
Bomb:
Eine Bombe kann im Shop erworben werden, diese kann irgendwo platziert werden, und dann aus bis zu 100 Metern Entfernung durch die "Y" Taste gesprengt werden.
Eine Reihe Admin Commands wurde inzwischen implementiert.
Weiterhin habe ich auch einige Maps aus meinem alten Projekt Hitoyoshi implementiert, damit diese noch Verwendung haben.
Fuer die naechste Version welche Mittwoch erscheinen soll, ist die Implementierung von Incognitos Streamer geplant.
Es gibt aktuell 3 Maps mit 4 Teams, und 1 Map mit 3 Teams
... weitere Features in neuer Version, siehe auch http://forum.sa-mp.com/showthread.php?p=3846056#post3846056
Hier mal einen kleinen Ueberblick ueber die Teams, und deren Lage, auf eine der aktuell 4 Maps.
Bilder:
Eine Bombe wird an einem Bett platziert!
Das Bett detoniert, und geht in Flammen auf!
Die auf Grand Larceny basierende Teamauswahl
Eins der 3 Teams die man auswaehlen kann.
Der Shop des Teams ROT
"Bronzespawner" und kleine Tafel die jedes Team besitzt, auf welcher Informationen zum Spiel angezeigt und aktualisiert werden.
Die aus Bedwars bekannte "Mitte"
Das Bett von Team GREY
Download:
Einfach das Repo klonen
https://github.com/Knogle/LastBedStanding