mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-05 23:21:53 +00:00
271 lines
9.3 KiB
Plaintext
271 lines
9.3 KiB
Plaintext
|
|
|
|
proc/sql_report_karma(var/mob/spender, var/mob/receiver)
|
|
var/sqlspendername = spender.name
|
|
var/sqlspenderkey = spender.key
|
|
var/sqlreceivername = receiver.name
|
|
var/sqlreceiverkey = receiver.key
|
|
var/sqlreceiverrole = "None"
|
|
var/sqlreceiverspecial = "None"
|
|
|
|
|
|
var/sqlspenderip = spender.client.address
|
|
|
|
if(receiver.mind)
|
|
if(receiver.mind.special_role)
|
|
sqlreceiverspecial = receiver.mind.special_role
|
|
if(receiver.mind.assigned_role)
|
|
sqlreceiverrole = receiver.mind.assigned_role
|
|
|
|
if(!dbcon.IsConnected())
|
|
log_game("SQL ERROR during karma logging. Failed to connect.")
|
|
else
|
|
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
|
|
var/DBQuery/query = dbcon.NewQuery("INSERT INTO karma (spendername, spenderkey, receivername, receiverkey, receiverrole, receiverspecial, spenderip, time) VALUES ('[sqlspendername]', '[sqlspenderkey]', '[sqlreceivername]', '[sqlreceiverkey]', '[sqlreceiverrole]', '[sqlreceiverspecial]', '[sqlspenderip]', '[sqltime]')")
|
|
if(!query.Execute())
|
|
var/err = query.ErrorMsg()
|
|
log_game("SQL ERROR during karma logging. Error : \[[err]\]\n")
|
|
|
|
|
|
query = dbcon.NewQuery("SELECT * FROM karmatotals WHERE byondkey='[receiver.key]'")
|
|
query.Execute()
|
|
|
|
var/karma
|
|
var/id
|
|
while(query.NextRow())
|
|
id = query.item[1]
|
|
karma = text2num(query.item[3])
|
|
if(karma == null)
|
|
karma = 1
|
|
query = dbcon.NewQuery("INSERT INTO karmatotals (byondkey, karma) VALUES ('[receiver.key]', [karma])")
|
|
if(!query.Execute())
|
|
var/err = query.ErrorMsg()
|
|
log_game("SQL ERROR during karmatotal logging (adding new key). Error : \[[err]\]\n")
|
|
else
|
|
karma += 1
|
|
query = dbcon.NewQuery("UPDATE karmatotals SET karma=[karma] WHERE id=[id]")
|
|
if(!query.Execute())
|
|
var/err = query.ErrorMsg()
|
|
log_game("SQL ERROR during karmatotal logging (updating existing entry). Error : \[[err]\]\n")
|
|
|
|
|
|
var/list/karma_spenders = list()
|
|
|
|
/mob/verb/spend_karma(var/mob/M in player_list) // Karma system -- TLE
|
|
set name = "Award Karma"
|
|
set desc = "Let the gods know whether someone's been nice. <One use only>"
|
|
set category = "Special Verbs"
|
|
if(!istype(M, /mob))
|
|
usr << "\red That's not a mob. You shouldn't have even been able to specify that. Please inform TLE post haste."
|
|
return
|
|
|
|
if(!M.client)
|
|
usr << "\red That mob has no client connected at the moment."
|
|
return
|
|
if(src.client.karma_spent)
|
|
usr << "\red You've already spent your karma for the round."
|
|
return
|
|
for(var/a in karma_spenders)
|
|
if(a == src.key)
|
|
usr << "\red You've already spent your karma for the round."
|
|
return
|
|
if(M.key == src.key)
|
|
usr << "\red You can't spend karma on yourself!"
|
|
return
|
|
if(M.client.address == src.client.address)
|
|
message_admins("\red Illegal karma spending detected from [src.key] to [M.key]. Using the same IP!")
|
|
log_game("\red Illegal karma spending detected from [src.key] to [M.key]. Using the same IP!")
|
|
usr << "\red The karma system is not available to multi-accounters."
|
|
var/choice = input("Give [M.name] good karma?", "Karma") in list("Good", "Cancel")
|
|
if(!choice || choice == "Cancel")
|
|
return
|
|
if(choice == "Good")
|
|
M.client.karma += 1
|
|
usr << "[choice] karma spent on [M.name]."
|
|
src.client.karma_spent = 1
|
|
karma_spenders.Add(src.key)
|
|
if(M.client.karma <= -2 || M.client.karma >= 2)
|
|
var/special_role = "None"
|
|
var/assigned_role = "None"
|
|
var/karma_diary = file("data/logs/karma_[time2text(world.realtime, "YYYY/MM-Month/DD-Day")].log")
|
|
if(M.mind)
|
|
if(M.mind.special_role)
|
|
special_role = M.mind.special_role
|
|
if(M.mind.assigned_role)
|
|
assigned_role = M.mind.assigned_role
|
|
karma_diary << "[M.name] ([M.key]) [assigned_role]/[special_role]: [M.client.karma] - [time2text(world.timeofday, "hh:mm:ss")] given by [src.key]"
|
|
|
|
sql_report_karma(src, M)
|
|
|
|
|
|
|
|
|
|
/client/verb/check_karma()
|
|
set name = "Check Karma"
|
|
set category = "Special Verbs"
|
|
set desc = "Reports how much karma you have accrued"
|
|
|
|
var/currentkarma=verify_karma()
|
|
usr << {"<br>You have <b>[currentkarma]</b> available."}
|
|
return
|
|
|
|
/client/proc/verify_karma()
|
|
var/currentkarma=0
|
|
if(!dbcon.IsConnected())
|
|
usr << "\red Unable to connect to karma database. Please try again later.<br>"
|
|
return
|
|
else
|
|
var/DBQuery/query = dbcon.NewQuery("SELECT karma, karmaspent FROM karmatotals WHERE byondkey='[src.key]'")
|
|
query.Execute()
|
|
|
|
var/totalkarma
|
|
var/karmaspent
|
|
while(query.NextRow())
|
|
totalkarma = query.item[1]
|
|
karmaspent = query.item[2]
|
|
currentkarma = (text2num(totalkarma) - text2num(karmaspent))
|
|
/* if(totalkarma)
|
|
usr << {"<br>You have <b>[currentkarma]</b> available.<br>
|
|
You've gained <b>[totalkarma]</b> total karma in your time here.<br>"}
|
|
else
|
|
usr << "<b>Your total karma is:</b> 0<br>"*/
|
|
return currentkarma
|
|
|
|
|
|
/client/verb/karmashop()
|
|
set name = "karmashop"
|
|
set desc = "Spend your hard-earned karma here"
|
|
set hidden = 1
|
|
|
|
karmashopmenu()
|
|
return
|
|
|
|
|
|
/client/proc/karmashopmenu()
|
|
var/dat = {"<B>Karma Shop</B><br>
|
|
<a href='?src=\ref[src];KarmaBuy=1'>Unlock Barber -- 5KP</a><br>
|
|
<a href='?src=\ref[src];KarmaBuy=2'>Unlock Nanotrasen Representative -- 15KP</a><br>
|
|
<a href='?src=\ref[src];KarmaBuy=3'>Unlock Customs Officer -- 30KP</a><br>
|
|
<a href='?src=\ref[src];KarmaBuy=4'>Unlock BlueShield -- 30KP</a><br>
|
|
<br>
|
|
<a href='?src=\ref[src];KarmaBuy=5'>Unlock Machine People -- 15KP</a><br>
|
|
<a href='?src=\ref[src];KarmaBuy=6'>Unlock Kidan -- 30KP</a><br>
|
|
<a href='?src=\ref[src];KarmaBuy=7'>Unlock Grey -- 30KP</a><br>
|
|
<a href='?src=\ref[src];KarmaBuy=8'>Unlock Vox -- 45KP</a><br>
|
|
<a href='?src=\ref[src];KarmaBuy=9'>Unlock Slime People -- 45KP</a><br>
|
|
<B>PLEASE NOTE THAT PEOPLE WHO TRY TO GAME THE KARMA SYSTEM WILL END UP ON THE WALL OF SHAME. THIS INCLUDES BUT IS NOT LIMITED TO TRADES, OOC KARMA BEGGING, CODE EXPLOITS, ETC.</B>
|
|
"}
|
|
|
|
var/datum/browser/popup = new(usr, "karmashop", "<div align='center'>Karma Shop</div>", 400, 400)
|
|
popup.set_content(dat)
|
|
popup.open(0)
|
|
return
|
|
|
|
|
|
|
|
/client/proc/DB_job_unlock(var/job,var/cost)
|
|
|
|
var/DBQuery/query = dbcon.NewQuery("SELECT * FROM whitelist WHERE ckey='[usr.key]'")
|
|
query.Execute()
|
|
|
|
var/dbjob
|
|
var/dbckey
|
|
while(query.NextRow())
|
|
|
|
dbckey = query.item[2]
|
|
dbjob = query.item[3]
|
|
if(!dbckey)
|
|
query = dbcon.NewQuery("INSERT INTO whitelist (ckey, job) VALUES ('[usr.key]','[job]')")
|
|
if(!query.Execute())
|
|
var/err = query.ErrorMsg()
|
|
log_game("SQL ERROR during whitelist logging (adding new key). Error : \[[err]\]\n")
|
|
message_admins("SQL ERROR during whitelist logging (adding new key). Error : \[[err]\]\n")
|
|
return
|
|
else
|
|
usr << "You have unlocked [job]."
|
|
message_admins("[key_name(usr)] has unlocked [job].")
|
|
karmacharge(cost)
|
|
|
|
if(dbckey)
|
|
var/list/joblist = text2list(dbjob,",")
|
|
if(!(job in joblist))
|
|
joblist += job
|
|
var/newjoblist = list2text(joblist,",")
|
|
query = dbcon.NewQuery("UPDATE whitelist SET job='[newjoblist]' WHERE ckey='[dbckey]'")
|
|
if(!query.Execute())
|
|
var/err = query.ErrorMsg()
|
|
log_game("SQL ERROR during whitelist logging (updating existing entry). Error : \[[err]\]\n")
|
|
message_admins("SQL ERROR during whitelist logging (updating existing entry). Error : \[[err]\]\n")
|
|
return
|
|
else
|
|
usr << "You have unlocked [job]."
|
|
message_admins("[key_name(usr)] has unlocked [job].")
|
|
karmacharge(cost)
|
|
else
|
|
usr << "You already have this job unlocked!"
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
/client/proc/DB_species_unlock(var/species,var/cost)
|
|
|
|
var/DBQuery/query = dbcon.NewQuery("SELECT * FROM whitelist WHERE ckey='[usr.key]'")
|
|
query.Execute()
|
|
|
|
var/dbspecies
|
|
var/dbckey
|
|
while(query.NextRow())
|
|
|
|
dbckey = query.item[2]
|
|
dbspecies = query.item[4]
|
|
if(!dbckey)
|
|
query = dbcon.NewQuery("INSERT INTO whitelist (ckey, species) VALUES ('[usr.key]','[species]')")
|
|
if(!query.Execute())
|
|
var/err = query.ErrorMsg()
|
|
log_game("SQL ERROR during whitelist logging (adding new key). Error : \[[err]\]\n")
|
|
message_admins("SQL ERROR during whitelist logging (adding new key). Error : \[[err]\]\n")
|
|
return
|
|
else
|
|
usr << "You have unlocked [species]."
|
|
message_admins("[key_name(usr)] has unlocked [species].")
|
|
karmacharge(cost)
|
|
|
|
if(dbckey)
|
|
var/list/specieslist = text2list(dbspecies,",")
|
|
if(!(species in specieslist))
|
|
specieslist += species
|
|
var/newspecieslist = list2text(specieslist,",")
|
|
query = dbcon.NewQuery("UPDATE whitelist SET species='[newspecieslist]' WHERE ckey='[dbckey]'")
|
|
if(!query.Execute())
|
|
var/err = query.ErrorMsg()
|
|
log_game("SQL ERROR during whitelist logging (updating existing entry). Error : \[[err]\]\n")
|
|
message_admins("SQL ERROR during whitelist logging (updating existing entry). Error : \[[err]\]\n")
|
|
return
|
|
else
|
|
usr << "You have unlocked [species]."
|
|
message_admins("[key_name(usr)] has unlocked [species].")
|
|
karmacharge(cost)
|
|
else
|
|
usr << "You already have this species unlocked!"
|
|
return
|
|
|
|
/client/proc/karmacharge(var/cost)
|
|
var/DBQuery/query = dbcon.NewQuery("SELECT * FROM karmatotals WHERE byondkey='[usr.key]'")
|
|
query.Execute()
|
|
|
|
while(query.NextRow())
|
|
var/spent = text2num(query.item[4])
|
|
spent += cost
|
|
query = dbcon.NewQuery("UPDATE karmatotals SET karmaspent=[spent] WHERE byondkey='[usr.key]'")
|
|
if(!query.Execute())
|
|
var/err = query.ErrorMsg()
|
|
log_game("SQL ERROR during karmaspent updating (updating existing entry). Error : \[[err]\]\n")
|
|
message_admins("SQL ERROR during karmaspent updating (updating existing entry). Error : \[[err]\]\n")
|
|
return
|
|
else
|
|
usr << "You have been charged [cost]."
|
|
message_admins("[key_name(usr)] has been charged [cost].")
|
|
return
|